From 75e83be13a8c4ccf081c4dc07a262e4096783c7e Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Fri, 02 Nov 2018 17:34:21 +0800 Subject: [PATCH] [*]修改电磁版本 配合电子修改bug --- .gradle/4.1/taskHistory/taskHistory.bin | 0 app/src/main/java/com/moral/yunfushao/ui/PanelView.java | 211 ++++++++++++-------- .gradle/4.1/javaCompile/classAnalysis.bin | 0 andbrickslib/andbrickslib.iml | 41 ++-- app/src/main/java/com/moral/yunfushao/common/AppConfig.java | 1 .gradle/4.1/taskHistory/fileSnapshots.bin | 0 FastBleLib/FastBleLib.iml | 1 .gradle/4.1/fileHashes/resourceHashesCache.bin | 0 app/build.gradle | 41 ++- app/app.iml | 27 +- gradlew | 0 FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java | 6 .gradle/4.1/javaCompile/jarAnalysis.bin | 0 .gradle/4.1/fileHashes/fileHashes.lock | 0 app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java | 10 app/src/main/res/values/strings.xml | 1 app/src/main/AndroidManifest.xml | 58 +++-- .gradle/4.1/javaCompile/taskJars.bin | 0 app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java | 1 app/src/main/java/com/moral/yunfushao/common/VersionConstants.java | 12 + app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java | 138 ++++++++---- .gradle/4.1/fileHashes/fileHashes.bin | 0 .gradle/4.1/javaCompile/javaCompile.lock | 0 .gradle/4.1/taskHistory/taskHistory.lock | 0 FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java | 9 .gradle/4.1/javaCompile/taskHistory.bin | 0 app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java | 5 27 files changed, 347 insertions(+), 215 deletions(-) diff --git a/.gradle/4.1/fileHashes/fileHashes.bin b/.gradle/4.1/fileHashes/fileHashes.bin index 1a8e623..99885b1 100644 --- a/.gradle/4.1/fileHashes/fileHashes.bin +++ b/.gradle/4.1/fileHashes/fileHashes.bin Binary files differ diff --git a/.gradle/4.1/fileHashes/fileHashes.lock b/.gradle/4.1/fileHashes/fileHashes.lock index ee84369..d2965bf 100644 --- a/.gradle/4.1/fileHashes/fileHashes.lock +++ b/.gradle/4.1/fileHashes/fileHashes.lock Binary files differ diff --git a/.gradle/4.1/fileHashes/resourceHashesCache.bin b/.gradle/4.1/fileHashes/resourceHashesCache.bin index 5ab16b0..30b12df 100644 --- a/.gradle/4.1/fileHashes/resourceHashesCache.bin +++ b/.gradle/4.1/fileHashes/resourceHashesCache.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/classAnalysis.bin b/.gradle/4.1/javaCompile/classAnalysis.bin index 47cc8d8..04d2f06 100644 --- a/.gradle/4.1/javaCompile/classAnalysis.bin +++ b/.gradle/4.1/javaCompile/classAnalysis.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/jarAnalysis.bin b/.gradle/4.1/javaCompile/jarAnalysis.bin index 3bc8bf7..2e8a73e 100644 --- a/.gradle/4.1/javaCompile/jarAnalysis.bin +++ b/.gradle/4.1/javaCompile/jarAnalysis.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/javaCompile.lock b/.gradle/4.1/javaCompile/javaCompile.lock index b71bfc9..f540802 100644 --- a/.gradle/4.1/javaCompile/javaCompile.lock +++ b/.gradle/4.1/javaCompile/javaCompile.lock Binary files differ diff --git a/.gradle/4.1/javaCompile/taskHistory.bin b/.gradle/4.1/javaCompile/taskHistory.bin index dc6f92e..786a006 100644 --- a/.gradle/4.1/javaCompile/taskHistory.bin +++ b/.gradle/4.1/javaCompile/taskHistory.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/taskJars.bin b/.gradle/4.1/javaCompile/taskJars.bin index a594919..dee8b54 100644 --- a/.gradle/4.1/javaCompile/taskJars.bin +++ b/.gradle/4.1/javaCompile/taskJars.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/fileSnapshots.bin b/.gradle/4.1/taskHistory/fileSnapshots.bin index 3329772..164c708 100644 --- a/.gradle/4.1/taskHistory/fileSnapshots.bin +++ b/.gradle/4.1/taskHistory/fileSnapshots.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/taskHistory.bin b/.gradle/4.1/taskHistory/taskHistory.bin index 3b958f7..7443fe3 100644 --- a/.gradle/4.1/taskHistory/taskHistory.bin +++ b/.gradle/4.1/taskHistory/taskHistory.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/taskHistory.lock b/.gradle/4.1/taskHistory/taskHistory.lock index 3e5ed24..655a050 100644 --- a/.gradle/4.1/taskHistory/taskHistory.lock +++ b/.gradle/4.1/taskHistory/taskHistory.lock Binary files differ diff --git a/FastBleLib/FastBleLib.iml b/FastBleLib/FastBleLib.iml index 9a2ba05..52f5e6f 100644 --- a/FastBleLib/FastBleLib.iml +++ b/FastBleLib/FastBleLib.iml @@ -87,6 +87,7 @@ <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/attr" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java index 155d9b7..e02a858 100644 --- a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java @@ -399,7 +399,6 @@ @Override public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) { BleLog.i("BleGattCallback���onConnectFailure "); - closeBluetoothGatt(); bluetoothGatt = null; Iterator iterator = callbackHashMap.entrySet().iterator(); @@ -449,7 +448,7 @@ @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { - BleLog.i("BleGattCallback���onServicesDiscovered "); + BleLog.i("BleGattCallback���onServicesDiscovered " + mtu); bluetoothGatt.requestMtu(mtu); connectionState = STATE_SERVICES_DISCOVERED; Iterator iterator = callbackHashMap.entrySet().iterator(); @@ -479,7 +478,6 @@ @Override public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { BleLog.i("BleGattCallback���onCharacteristicWrite "); - Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); @@ -492,7 +490,7 @@ @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { - BleLog.i("BleGattCallback���onCharacteristicChanged "); + BleLog.i("BleGattCallback���onCharacteristicChanged " + characteristic.getValue().length); Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); diff --git a/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java b/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java index 33a3d7a..39a8596 100644 --- a/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java +++ b/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java @@ -361,15 +361,12 @@ handler.removeMessages(MSG_NOTIFY_CHA, this); } + if (characteristic.getUuid().equals(UUID.fromString(uuid_notify))) { + System.out.println("chenqi Notify ->" + characteristic.getValue().length); + System.out.println("chenqi Notify Hex ->" + BleBluetooth.dumpHex(characteristic.getValue())); bleCallback.onSuccess(characteristic); } - } - - @Override - public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { - super.onMtuChanged(gatt, mtu, status); - System.out.println(String.format("onMtuChanged���mtu = %s", mtu)); } }); diff --git a/andbrickslib/andbrickslib.iml b/andbrickslib/andbrickslib.iml index 1cfb37d..cf8b7b2 100644 --- a/andbrickslib/andbrickslib.iml +++ b/andbrickslib/andbrickslib.iml @@ -87,6 +87,7 @@ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/attr" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> @@ -107,38 +108,38 @@ <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-fragment-25.3.1" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.3.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> - <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> - <orderEntry type="library" name="Gradle: com.lzy.net:okserver-1.1.3" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> - <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> - <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0@jar" level="project" /> - <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.3.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v4-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> + <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.1.56.android@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.lzy.net:okserver-1.1.3" level="project" /> + <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> + <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.lzy.net:okgo-2.1.4" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.4.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-25.3.1" level="project" /> + <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.9.0@jar" level="project" /> + <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> </component> </module> \ No newline at end of file diff --git a/app/app.iml b/app/app.iml index ac419e1..1006a91 100644 --- a/app/app.iml +++ b/app/app.iml @@ -92,7 +92,9 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> @@ -100,6 +102,7 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/reports" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> </content> <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> @@ -108,21 +111,14 @@ <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-fragment-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.3.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: pub.devrel:easypermissions-0.4.0" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.contrarywind:Android-PickerView-3.1.2" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v4-25.3.1" level="project" /> @@ -130,14 +126,10 @@ <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-25.3.1" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:cardview-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: in.srain.cube:ultra-ptr-1.0.11" level="project" /> <orderEntry type="library" name="Gradle: org.greenrobot:eventbus:3.0.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.1.56.android@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.github.lecho:hellocharts-library-1.5.8" level="project" /> <orderEntry type="library" name="Gradle: __local_aars__:/Users/chenqi/AndroidStudioProjects/pregnancy_guard_android/app/libs/BaiduLBS_Android.jar:unspecified@jar" level="project" /> <orderEntry type="library" name="Gradle: com.daimajia.numberprogressbar:library-1.4" level="project" /> @@ -150,5 +142,18 @@ <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> <orderEntry type="module" module-name="andbrickslib" /> <orderEntry type="module" module-name="FastBleLib" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> + <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> + <orderEntry type="module" module-name="andbrickslib" /> + <orderEntry type="module" module-name="FastBleLib" /> </component> </module> \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b647132..1460c65 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,31 +7,44 @@ applicationId "com.moral.yunfushao" minSdkVersion 21 targetSdkVersion 25 - versionCode 1 - versionName "1.0" + versionCode 2 + versionName "1.0.2_sp3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + signingConfig signingConfigs.debug } - -// signingConfigs { -// // your debug keystore -//// debug { -//// keyAlias 'chenqi' -//// keyPassword '123456' -//// storeFile file('/Users/chenqi/chenqi.jks') -//// storePassword '123456' -//// } -// } - + signingConfigs { + key { + keyAlias 'qxpc' + keyPassword '123456' + storeFile file('../pregnancy_guard_android/qixingpiaochong') + storePassword '123456' + } + } sourceSets { main { jniLibs.srcDirs = ['libs'] + } + } + //��������������� + //3.0������ + android.applicationVariants.all { variant -> + variant.outputs.all { + if (buildType.name == "debug") + outputFileName = "Dev_yfs_v.${variant.versionName}.apk" + else outputFileName = "yfs_v.${variant.versionName}.apk" } } buildTypes { release { minifyEnabled false + zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + manifestPlaceholders = [app_name: "@string/app_name"]//������������ + } + debug { + minifyEnabled false + manifestPlaceholders = [app_name: "@string/app_name_text"] } } } @@ -53,7 +66,7 @@ compile 'com.github.bumptech.glide:glide:3.7.0' //������������ compile 'com.lzy.net:okgo:2.1.4' - compile files('libs/BaiduLBS_Android.jar') + compile files('libs/BaiduLBS_Android.jar') compile 'pub.devrel:easypermissions:0.4.0' compile 'com.daimajia.numberprogressbar:library:1.4@aar' compile 'org.greenrobot:eventbus:3.0.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 27998dc..cac457a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,39 +34,58 @@ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> - <uses-permission android:name="android.permission.GET_ACCOUNTS"/> - <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> + <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- ������������ debug ������������������6.0 ��������� ������������������ --> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> - <uses-permission android:name="android.permission.BLUETOOTH"/> - <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> + <uses-permission android:name="android.permission.BLUETOOTH" /> + <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <application - android:allowBackup="true" android:name="com.moral.yunfushao.MainApp" + android:allowBackup="true" android:icon="@mipmap/icon" - tools:replace="android:icon" - android:label="@string/app_name" + android:label="${app_name}" android:supportsRtl="true" - android:theme="@style/AppTheme"> - <activity android:name=".activity.SplashActivity" + android:theme="@style/AppTheme" + tools:replace="android:icon,android:label"> + <activity + android:name=".activity.SplashActivity" android:theme="@style/AppWelcomeTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.moral.yunfushao.MainActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.ForgetPasswordActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.LoginActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.RegisterActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.BLESearchActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.VoiceSetActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.ChartActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.ChooseSongActivity" android:screenOrientation="portrait"/> - <activity android:name="com.moral.yunfushao.activity.TestActivity" android:screenOrientation="portrait"/> + <activity + android:name="com.moral.yunfushao.MainActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.ForgetPasswordActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.LoginActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.RegisterActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.BLESearchActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.VoiceSetActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.ChartActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.ChooseSongActivity" + android:screenOrientation="portrait" /> + <activity + android:name="com.moral.yunfushao.activity.TestActivity" + android:screenOrientation="portrait" /> <service android:name=".ble.BluetoothService" /> <meta-data @@ -75,8 +94,7 @@ <service android:name="com.baidu.location.f" android:enabled="true" - android:process=":remote" > - </service> + android:process=":remote"></service> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java index bceeb16..a97f02c 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java @@ -105,7 +105,10 @@ if (MainApp.theApp.bleManager != null) { MainApp.theApp.bleManager.closeBluetoothGatt(); } - mBluetoothService.scanAndConnect5(scanResultList.get(position).getDevice().getAddress()); + EventMessage eventMessage = new EventMessage(); + eventMessage.setType(AppConfig.BLUETOOCH_CHANGE_CONNECT); + EventBus.getDefault().post(eventMessage); + mBluetoothService.connectDevice(scanResultList.get(position)); } } diff --git a/app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java b/app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java index f3f1fa0..25ed224 100644 --- a/app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java +++ b/app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java @@ -9,7 +9,6 @@ import com.moral.andbrickslib.baseadapter.recyclerview.base.ViewHolder; import com.moral.yunfushao.R; import com.moral.yunfushao.model.Song; -import com.moral.yunfushao.model.VoiceBean; import java.util.List; diff --git a/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java b/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java index 1c2a716..81f7872 100644 --- a/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java +++ b/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java @@ -154,24 +154,23 @@ mCallback.onConnecting(); } - System.out.println("BleGattCallback setting " + scanResult.getDevice().getAddress()); - System.out.println("Ble onconnectSuccess"); - bleManager.connectDevice(scanResult, false, new BleGattCallback() { @Override public void onFoundDevice(ScanResult scanResult) { + System.out.println("chenqi blueTooth connect state -> onFoundDevice"); BluetoothService.this.name = scanResult.getDevice().getName(); BluetoothService.this.mac = scanResult.getDevice().getAddress(); } @Override public void onConnecting(BluetoothGatt gatt, int status) { - + System.out.println("chenqi blueTooth connect state -> onConnecting"); } @Override public void onConnectError(BleException exception) { + System.out.println("chenqi blueTooth connect state -> onConnectError"); runOnMainThread(new Runnable() { @Override public void run() { @@ -184,12 +183,14 @@ @Override public void onConnectSuccess(BluetoothGatt gatt, int status) { + System.out.println("chenqi blueTooth connect state -> onConnectSuccess"); //���������������������������������MAC MainApp.theApp.sharedPreferencesUtil.saveBLE(gatt.getDevice().getAddress()); } @Override public void onServicesDiscovered(final BluetoothGatt gatt, int status) { + System.out.println("chenqi blueTooth connect state -> onServicesDiscovered"); BluetoothService.this.gatt = gatt; runOnMainThread(new Runnable() { @Override @@ -203,6 +204,7 @@ @Override public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) { + System.out.println("chenqi blueTooth connect state -> onDisConnected"); runOnMainThread(new Runnable() { @Override public void run() { diff --git a/app/src/main/java/com/moral/yunfushao/common/AppConfig.java b/app/src/main/java/com/moral/yunfushao/common/AppConfig.java index 1a89097..d10c9ae 100644 --- a/app/src/main/java/com/moral/yunfushao/common/AppConfig.java +++ b/app/src/main/java/com/moral/yunfushao/common/AppConfig.java @@ -11,6 +11,7 @@ public static final int CHANGE_SETTING = 3; public static final int SET_MAIN_CALL = 4; public static final int SET_VOICE = 5; + public static final int BLUETOOCH_CHANGE_CONNECT = 6; public static String voideUrl1 = "http://yfsapi.7drlb.com/video/boy/music.mp3"; public static String voideUrl2 = "http://yfsapi.7drlb.com/video/boy/music1.mp3"; public static String voideUrl3 = "http://yfsapi.7drlb.com/video/boy/music2.mp3"; diff --git a/app/src/main/java/com/moral/yunfushao/common/VersionConstants.java b/app/src/main/java/com/moral/yunfushao/common/VersionConstants.java new file mode 100644 index 0000000..09351c9 --- /dev/null +++ b/app/src/main/java/com/moral/yunfushao/common/VersionConstants.java @@ -0,0 +1,12 @@ +package com.moral.yunfushao.common; + +/** + * @author : chenqi. + * @e_mail : 1650699704@163.com. + * @create_time : 2018/11/2. + * @Package_name: pregnancy_guard_android + */ +public class VersionConstants { + public static final String DEBUG = "debug"; + public static final String RELEASE = "release"; +} diff --git a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java index fd7ea84..e6c34c2 100644 --- a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java +++ b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java @@ -35,6 +35,7 @@ import com.moral.andbrickslib.utils.TimeUtil; import com.moral.andbrickslib.utils.dialog.MaterialDialogUtils; import com.moral.andbrickslib.utils.log.XLog; +import com.moral.yunfushao.BuildConfig; import com.moral.yunfushao.MainActivity; import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; @@ -45,6 +46,7 @@ import com.moral.yunfushao.ble.BluetoothService; import com.moral.yunfushao.common.API; import com.moral.yunfushao.common.AppConfig; +import com.moral.yunfushao.common.VersionConstants; import com.moral.yunfushao.httputils.HttpCallBack; import com.moral.yunfushao.httputils.HttpUtils; import com.moral.yunfushao.imageload.ImageLoader; @@ -90,6 +92,7 @@ private ArrayList<RecData> submitResult = new ArrayList<>(); private StringBuilder stringResult = new StringBuilder(); + private String deviceName = "";//��������������������������� //������������������������ private ArrayList<RecData> submitTempResult = new ArrayList<>(); @@ -120,8 +123,10 @@ handler.removeCallbacks(runnable); checkTimeCount = 0; - result = result.substring(14); - doHandleData(result); + if (result.length() > 14) { + result = result.substring(14); + doHandleData(result); + } } if (result.startsWith("3A")) { @@ -151,7 +156,6 @@ if (result.length() >= 76) { DebugUtils.sendData("data", result); parseHoutData(result.substring(0, 76)); - mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null); result = result.substring(76); doHandleData(result); } else { @@ -167,6 +171,7 @@ */ @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void eventComing(EventMessage msg) { + System.out.println("chenqi msge -> " + msg.getType()); if (msg.getType() == AppConfig.GET_BLE_SERVICE) { if (chonglianTimer != null) { chonglianTimer.cancel(); @@ -190,7 +195,6 @@ for (BluetoothGattCharacteristic characteristic : mBluetoothService.getService().getCharacteristics()) { int charaProp = characteristic.getProperties(); if ((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0) { - } if ((charaProp & BluetoothGattCharacteristic.PROPERTY_WRITE) > 0 || (charaProp & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) > 0) { mBluetoothService.setWirteCharacteristic(characteristic); @@ -199,6 +203,7 @@ mBluetoothService.setCharacteristic(characteristic); } } + } /** @@ -252,10 +257,6 @@ } else if (msg.getType() == AppConfig.GET_BLE_DISCONNECT) { preLevel = -1; showStatus(-1); - pv.setStatusStr("���������"); - pv.setPercent(0); - tv_ljjl.setText("0"); - tv_shishi.setText("0"); chonglian(); stop(); isVirating = false; @@ -294,7 +295,8 @@ voiceBean.setName("������������"); voiceList.add(voiceBean); } - + } else if (msg.getType() == AppConfig.BLUETOOCH_CHANGE_CONNECT) { + showStatus(-1); } } @@ -382,14 +384,17 @@ iv_dianliang.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - FlipAnimatorXViewShow(iv_dianliang, tv_dianliang2, 200); + if (BuildConfig.BUILD_TYPE.equals(VersionConstants.DEBUG)) { + FlipAnimatorXViewShow(iv_dianliang, tv_dianliang2, 200); + } } }); tv_dianliang2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - FlipAnimatorXViewShow(tv_dianliang2, iv_dianliang, 200); - + if (BuildConfig.BUILD_TYPE.equals(VersionConstants.DEBUG)) { + FlipAnimatorXViewShow(tv_dianliang2, iv_dianliang, 200); + } } }); showStatus(-1); @@ -605,16 +610,18 @@ int danger = R.mipmap.icon_danger; if (type == 1) { //������ - yanzhang = R.mipmap.dianliyanyang; - danger = R.mipmap.dianlidanger; - lv_ljjl.setVisibility(View.VISIBLE); - tvShishiTitle.setText("������������(uSv/h)"); - } else if (type == 2) { - //������ yanzhang = R.mipmap.icon_yanzhong; danger = R.mipmap.icon_danger; - tvShishiTitle.setText("������������(V/m)"); - lv_ljjl.setVisibility(View.GONE); + tvLijiTitle.setText("������������(uSv)"); + tvShishiTitle.setText("������������(uSv/h)"); + iv_dianliang.setEnabled(false); + } else if (type == 2) { + //������ + yanzhang = R.mipmap.dianliyanyang; + danger = R.mipmap.dianlidanger; + tvLijiTitle.setText("������������"); + tvShishiTitle.setText("������������"); + iv_dianliang.setEnabled(true); } if (level == 0) { @@ -662,6 +669,22 @@ tv_status.setText("������"); tv_status.setTextColor(getResources().getColor(R.color.gray_txt)); ll_status.setBackgroundResource(R.mipmap.bg_corner_gray); + pv.setStatusStr("���������"); + pv.setPercent(0); + tv_ljjl.setText("0"); + tv_shishi.setText("0"); + showPower(2, 0); + } else if (level == -2) { + tv_tishi.setText("���������������������"); + tv_tishi.setBackgroundResource(R.mipmap.bt_green); + tv_desc.setText("������������������������"); + iv_status.setVisibility(View.GONE); + tv_status.setText("���������"); + ll_status.setBackgroundResource(R.mipmap.bg_corner_gray); + pv.setPercent(0); + pv.setStatusStr("���������"); + tv_ljjl.setText("0"); + tv_shishi.setText("0"); } } @@ -672,7 +695,6 @@ */ private int preLevel = -1; - /** * data : 5A160000FA1C0400004100E7000700000071005B * format : 20������������5A������ 5B������ @@ -682,6 +704,7 @@ */ //todo ������������������ private void parseCurrentData(String nowResult) { + System.out.println("chenqi nowResult parseCurrentData"); type = 1; if (!TextUtils.isEmpty(nowResult) && nowResult.length() == 40 && nowResult.startsWith("5A") && nowResult.endsWith("5B")) { int real = Integer.parseInt(nowResult.substring(24, 26), 16) * 256 + Integer.parseInt(nowResult.substring(26, 28), 16); @@ -701,10 +724,6 @@ data.setTime(TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss")); data.setType(0); - /** - * ������������ - */ - showPower(b1, b2); if (realValue < 0.16) { data.setIs_warn(0); @@ -748,7 +767,10 @@ AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } } - + /** + * ������������ + */ + showPower(b1, b2); submitResult.add(data); // realResult.clear(); } @@ -760,6 +782,7 @@ * ������������������ */ private void parseHoutData(String nowResult) { + System.out.println("chenqi elec parseHoutData" + nowResult); if (TextUtils.isEmpty(nowResult)) { return; } @@ -767,33 +790,41 @@ String[] strings = StringUtils.splitString(nowResult, 2); if (strings[0].startsWith("7A") && strings[35].endsWith("7B")) { String realString = StringUtils.subStrings(strings, 21, 23); - int real = Integer.parseInt(realString, 16); + int electric_field = Integer.parseInt(realString, 16); int b1 = Integer.parseInt(strings[24], 16); int b2 = Integer.parseInt(strings[25], 16); - double realValue = NumberUtils.getBigDecimalValue((real) / 100.0, 3); + int baojing = Integer.parseInt(strings[29], 16); + int elec = Integer.parseInt(StringUtils.subStrings(strings, 13, 15)); +// T.show("bl = " + strings[24] + " -- b2 = " + strings[25]); +// +// System.out.println("bl = " + b1 + " -- b2 = " + b2); + + double electricFieldValue = (electric_field) / 100.0; + double elecValue = (elec) / 100.0; + String power = StringUtils.subStrings(strings, 26, 27); + double textPower = Integer.parseInt(power, 16) / 1000.0; + + tv_shishi.setText(electricFieldValue + "(V/m)"); + tv_dianliang2.setText(textPower + "V"); - tv_shishi.setText(realValue + ""); + + tv_ljjl.setText(elecValue + "(��T)"); /** * ��������������������� */ RecData data = new RecData(); - data.setValue(realValue); + data.setValue(electricFieldValue); data.setTime(TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss")); data.setType(0); - /** - * ������������ - */ - showPower(b1, b2); showStatus(Integer.parseInt(strings[21], 16)); - if (realValue < 0.16) { - data.setIs_warn(0); - pv.setPercent((float) (realValue * (0.25 / 0.16))); + if (baojing == 0) { + pv.setPercent((float) (0.125)); showStatus(0); stop(); if (isVirating) { @@ -801,40 +832,50 @@ AudioUtils.virateCancle(getActivity()); } preLevel = -1; - } else if (realValue >= 0.16 && realValue < 0.8) { + } else if (baojing == 1) { data.setIs_warn(1); - pv.setPercent((float) (0.25 + realValue * (0.25 / 0.8))); + pv.setPercent((float) (0.375)); showStatus(1); play(0); if (!isVirating) { isVirating = true; AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } - } else if (realValue >= 0.8 && realValue < 2) { + } else if (baojing == 2) { data.setIs_warn(1); showStatus(2); - pv.setPercent((float) (0.5 + realValue * (0.25 / 2))); + pv.setPercent((float) (0.625)); play(1); if (!isVirating) { isVirating = true; AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } - } else if (realValue >= 2) { + } else if (baojing == 3) { data.setIs_warn(1); showStatus(3); - if ((0.75 + realValue / 30) < 1.0) { - pv.setPercent((float) (0.75 + realValue / 30)); - } else { - pv.setPercent(1.0f); + pv.setPercent((float) (0.875)); + play(2); + if (!isVirating) { + isVirating = true; + AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } + } else if (baojing == 4) { + data.setIs_warn(1); + showStatus(3); + pv.setPercent((float) (1.00)); play(2); if (!isVirating) { isVirating = true; AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } } + System.out.println("chenqi elec B-- " + b2); + /** + * ������������ + */ + showPower(b1, b2); submitResult.add(data); -// realResult.clear(); + // realResult.clear(); } } @@ -868,7 +909,6 @@ ArrayList<RecData> temp = new ArrayList<>(); temp.add(data); - Log.d("hourdata", "=====hourdata=====" + FastJsonTools.toJson(temp)); test(nowResult, time.toString()); submitHourData(temp); } @@ -880,6 +920,7 @@ private void showPower(int b1, int b2) { if (b1 == 1) { ImageLoader.setGIFByUrl(getActivity(), R.mipmap.icon_chong, iv_dianliang); + showStatus(-2); } else if (b1 == 2) { ImageLoader.setImageViewById(getActivity(), R.mipmap.icon_full, iv_dianliang); } else { @@ -1065,7 +1106,6 @@ } public static void FlipAnimatorXViewShow(final View oldView, final View newView, final long time) { - ObjectAnimator animator1 = ObjectAnimator.ofFloat(oldView, "rotationX", 0, 90); final ObjectAnimator animator2 = ObjectAnimator.ofFloat(newView, "rotationX", -90, 0); animator2.setInterpolator(new OvershootInterpolator(2.0f)); diff --git a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java index edd75ff..c712411 100644 --- a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java +++ b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java @@ -1,5 +1,6 @@ package com.moral.yunfushao.ui; +import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; @@ -28,11 +29,11 @@ private int mmHeight; //��������������������������� private Paint mShaderPaint; - private int[] mshaderColor = new int[]{0xfff70e17,0xfff70e17,0xfff70e17,0xffff5c92,0xff00c44a,0xff00d062,0xff00f5af,0xff00f6cb,0xff00ccff,0xff179fff,0xffa054ff,0xffa53aff,0xffd74bff,0xfff64da5,0xfff70e17}; - private int[] mshaderRedColor = new int[]{0xfff70e17,0xffff5c92}; - private int[] mshaderZiseColor = new int[]{0xffa53aff,0xffd74bff,0xfff64da5}; - private int[] mshaderBlueColor = new int[]{0xff00f6cb,0xff00ccff,0xff179fff,0xffa054ff}; - private int[] mshaderGreenColor = new int[]{0xff00c44a,0xff00d062,0xff00f5af}; + private int[] mshaderColor = new int[]{0xfff70e17, 0xfff70e17, 0xfff70e17, 0xffff5c92, 0xff00c44a, 0xff00d062, 0xff00f5af, 0xff00f6cb, 0xff00ccff, 0xff179fff, 0xffa054ff, 0xffa53aff, 0xffd74bff, 0xfff64da5, 0xfff70e17}; + private int[] mshaderRedColor = new int[]{0xfff70e17, 0xffff5c92}; + private int[] mshaderZiseColor = new int[]{0xffa53aff, 0xffd74bff, 0xfff64da5}; + private int[] mshaderBlueColor = new int[]{0xff00f6cb, 0xff00ccff, 0xff179fff, 0xffa054ff}; + private int[] mshaderGreenColor = new int[]{0xff00c44a, 0xff00d062, 0xff00f5af}; //������������������������ private SweepGradient mSweepGradient; private int mShaderWidth = 70; @@ -59,7 +60,7 @@ private Paint drawTextPaint; private int textColor = Color.GRAY; private int textSize = 36; - private String[] level = {"������������","������������","������������","������������"}; + private String[] level = {"������������", "������������", "������������", "������������"}; //������������ private Paint mCirclePaint; @@ -75,17 +76,26 @@ private Bitmap mBitmap; private float percent = 0;//��������������� + private float percent2 = (float) 0.27;//��������������� + private String statusStr = "���������"; + private ValueAnimator anim; - public void setStatusStr(String statusStr){ + public void setStatusStr(String statusStr) { this.statusStr = statusStr; postInvalidate(); } - public void setPercent(float percent){ + public void setPercent(float percent) { this.percent = percent; +// this.percent2 = percent; postInvalidate(); +// if (anim.isStarted() || anim.isRunning()) { +// anim.end(); +// anim.cancel(); +// } +// anim.start(); } public PanelView(Context context) { @@ -106,15 +116,15 @@ private void init(Context mContext) { this.mContext = mContext; //��������� - mShaderWidth = dip2px(mContext,24); - line1Length = dip2px(mContext,14); - line2Length = dip2px(mContext,22); - lineWidth = dip2px(mContext,2); - widthInner = dip2px(mContext,40); - paddingKedu = dip2px(mContext,10); - mCircleWidth = dip2px(mContext,24); - innerPadding = dip2px(mContext,8); - textSize = dip2px(mContext,12); + mShaderWidth = dip2px(mContext, 24); + line1Length = dip2px(mContext, 14); + line2Length = dip2px(mContext, 22); + lineWidth = dip2px(mContext, 2); + widthInner = dip2px(mContext, 40); + paddingKedu = dip2px(mContext, 10); + mCircleWidth = dip2px(mContext, 24); + innerPadding = dip2px(mContext, 8); + textSize = dip2px(mContext, 12); //������������ mShaderPaint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -123,7 +133,7 @@ mShaderPaint.setStrokeCap(Paint.Cap.ROUND); paintGapLine = new Paint(Paint.ANTI_ALIAS_FLAG); paintGapLine.setColor(Color.WHITE); - paintGapLine.setStrokeWidth(dip2px(mContext,3)); + paintGapLine.setStrokeWidth(dip2px(mContext, 3)); //������ mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG); mLinePaint.setStyle(Paint.Style.STROKE); @@ -149,7 +159,8 @@ mBitPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mBitPaint.setFilterBitmap(true); mBitPaint.setDither(true); - mBitmap = ((BitmapDrawable)mContext.getResources().getDrawable(R.mipmap.zhizhen)).getBitmap(); + mBitmap = ((BitmapDrawable) mContext.getResources().getDrawable(R.mipmap.zhizhen)).getBitmap(); +// startAnimation(); } @Override @@ -169,50 +180,78 @@ } else { mmHeight = dip2px(mContext, 300); } - mWidth = mmWidth<mmHeight?mmWidth:mmHeight; + mWidth = mmWidth < mmHeight ? mmWidth : mmHeight; setMeasuredDimension(mmWidth, mmHeight); } + +// private void startAnimation() { +// anim = ValueAnimator.ofObject(new CustomPointEvaluator(),(float)0, percent2); +// anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { +// @Override +// public void onAnimationUpdate(ValueAnimator animation) { +// percent = (float) animation.getAnimatedValue(); +// System.out.println("chenqi rotato " + percent + " all -> " + percent2 * 300); +//// invalidate(); +// } +// }); +// anim.setDuration(3000L); +// anim.setRepeatCount(Animation.INFINITE); +// } +// +// private class CustomPointEvaluator implements TypeEvaluator<Float> { +// @Override +// public Float evaluate(float fraction, Float startValue, Float endValue) { +// System.out.println("chenqi2 rotato " + fraction + " all -> " + endValue); +// float y = fraction * endValue; +// return y; +// } +// } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - //��������� + //��������� drawKedu(canvas); //��������������� drawTextKedu(canvas); //��������������� drawJianbianCircle(canvas); //��������� - RectF cirlcleRect = new RectF(mShaderWidth + widthInner+mCircleWidth+innerPadding, mShaderWidth + widthInner+mCircleWidth+innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding); + RectF cirlcleRect = new RectF(mShaderWidth + widthInner + mCircleWidth + innerPadding, mShaderWidth + widthInner + mCircleWidth + innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding); canvas.drawArc(cirlcleRect, 0, 360, false, mCirclePaint); //��������� - float circleR = (cirlcleRect.right - cirlcleRect.left)/2; + float circleR = (cirlcleRect.right - cirlcleRect.left) / 2; float bitH = circleR; - float bitW = bitH*0.448f; + float bitW = bitH * 0.448f; canvas.save(); - canvas.rotate(percent*300-150,mWidth/2,mWidth/2); - RectF btmRect = new RectF((float) (cirlcleRect.left+bitH-bitW*0.535), (float) (cirlcleRect.top+mCircleWidth*0.68),(float) (cirlcleRect.left+bitH+bitW*0.465), (float) (cirlcleRect.top+bitH+mCircleWidth*0.68)); + + System.out.println("chenqi percent connect" + percent); + canvas.rotate(percent * 300 - 150, mWidth / 2, mWidth / 2); + RectF btmRect = new RectF((float) (cirlcleRect.left + bitH - bitW * 0.535), (float) (cirlcleRect.top + mCircleWidth * 0.68), (float) (cirlcleRect.left + bitH + bitW * 0.465), (float) (cirlcleRect.top + bitH + mCircleWidth * 0.68)); // Log.d("haijiang","left="+btmRect.left); // Log.d("haijiang","right="+btmRect.right); // Log.d("haijiang","top="+btmRect.top); // Log.d("haijiang","bottom="+btmRect.bottom); // Log.d("haijiang","������������="+(btmRect.right-btmRect.left)/(btmRect.bottom-btmRect.top)); - canvas.drawBitmap(mBitmap,null,btmRect,mBitPaint); + canvas.drawBitmap(mBitmap, null, btmRect, mBitPaint); canvas.restore(); drawTextPaint.setColor(line3Color); drawTextPaint.setTextSize(textSize); int statusStrWidth = (int) drawTextPaint.measureText(this.statusStr); - canvas.drawText(this.statusStr,mWidth / 2-statusStrWidth/2, mWidth/2+(btmRect.bottom-btmRect.top)/2,drawTextPaint); - if(percent>0) - canvas.drawArc(new RectF(mShaderWidth + widthInner+mCircleWidth+innerPadding, mShaderWidth + widthInner+mCircleWidth+innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding), 120, 300*percent, false, mProgressPaint); + canvas.drawText(this.statusStr, mWidth / 2 - statusStrWidth / 2, mWidth / 2 + (btmRect.bottom - btmRect.top) / 2, drawTextPaint); + if (percent > 0) + canvas.drawArc(new RectF(mShaderWidth + widthInner + mCircleWidth + innerPadding, mShaderWidth + widthInner + mCircleWidth + innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding), + 120, 300 * percent, false, mProgressPaint); } /** * ��������� + * * @param canvas */ - private void drawKedu(Canvas canvas){ + private void drawKedu(Canvas canvas) { //��������������� for (int i = 0; i <= 50; i++) { canvas.save(); @@ -245,85 +284,86 @@ /** * ��������������� + * * @param canvas */ - private void drawTextKedu(Canvas canvas){ - for(int i=0;i<level.length;i++){ + private void drawTextKedu(Canvas canvas) { + for (int i = 0; i < level.length; i++) { float textWidth = drawTextPaint.measureText(level[i]); - if(percent<0.25){ - if(i==0){ + if (percent < 0.25) { + if (i == 0) { drawTextPaint.setColor(line3Color); - }else{ + } else { drawTextPaint.setColor(Color.GRAY); } canvas.save(); - if(i==0){ - canvas.rotate(-120,mWidth/2,mWidth/2); - }else if(i==1){ - canvas.rotate(-45,mWidth/2,mWidth/2); - }else if(i==2){ - canvas.rotate(45,mWidth/2,mWidth/2); - }else if(i==3){ - canvas.rotate(120,mWidth/2,mWidth/2); + if (i == 0) { + canvas.rotate(-120, mWidth / 2, mWidth / 2); + } else if (i == 1) { + canvas.rotate(-45, mWidth / 2, mWidth / 2); + } else if (i == 2) { + canvas.rotate(45, mWidth / 2, mWidth / 2); + } else if (i == 3) { + canvas.rotate(120, mWidth / 2, mWidth / 2); } - canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint); + canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint); canvas.restore(); - }else if(percent>=0.25&&percent<0.5){ - if(i==1){ + } else if (percent >= 0.25 && percent < 0.5) { + if (i == 1) { drawTextPaint.setColor(line3Color); - }else{ + } else { drawTextPaint.setColor(Color.GRAY); } canvas.save(); // canvas.rotate(-120+i*75,mWidth/2,mWidth/2); - if(i==0){ - canvas.rotate(-120,mWidth/2,mWidth/2); - }else if(i==1){ - canvas.rotate(-45,mWidth/2,mWidth/2); - }else if(i==2){ - canvas.rotate(45,mWidth/2,mWidth/2); - }else if(i==3){ - canvas.rotate(120,mWidth/2,mWidth/2); + if (i == 0) { + canvas.rotate(-120, mWidth / 2, mWidth / 2); + } else if (i == 1) { + canvas.rotate(-45, mWidth / 2, mWidth / 2); + } else if (i == 2) { + canvas.rotate(45, mWidth / 2, mWidth / 2); + } else if (i == 3) { + canvas.rotate(120, mWidth / 2, mWidth / 2); } - canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint); + canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint); canvas.restore(); - }else if(percent>=0.5&&percent<0.75){ - if(i==2){ + } else if (percent >= 0.5 && percent < 0.75) { + if (i == 2) { drawTextPaint.setColor(line3Color); - }else{ + } else { drawTextPaint.setColor(Color.GRAY); } canvas.save(); // canvas.rotate(-120+i*75,mWidth/2,mWidth/2); - if(i==0){ - canvas.rotate(-120,mWidth/2,mWidth/2); - }else if(i==1){ - canvas.rotate(-45,mWidth/2,mWidth/2); - }else if(i==2){ - canvas.rotate(45,mWidth/2,mWidth/2); - }else if(i==3){ - canvas.rotate(120,mWidth/2,mWidth/2); + if (i == 0) { + canvas.rotate(-120, mWidth / 2, mWidth / 2); + } else if (i == 1) { + canvas.rotate(-45, mWidth / 2, mWidth / 2); + } else if (i == 2) { + canvas.rotate(45, mWidth / 2, mWidth / 2); + } else if (i == 3) { + canvas.rotate(120, mWidth / 2, mWidth / 2); } - canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint); + canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint); canvas.restore(); - }else if(percent>=0.75){ - if(i==3){ + } else if (percent >= 0.75) { + if (i == 3) { drawTextPaint.setColor(line3Color); - }else{ + } else { drawTextPaint.setColor(Color.GRAY); } canvas.save(); // canvas.rotate(-105+i*75,mWidth/2,mWidth/2); - if(i==0){ - canvas.rotate(-120,mWidth/2,mWidth/2); - }else if(i==1){ - canvas.rotate(-45,mWidth/2,mWidth/2); - }else if(i==2){ - canvas.rotate(45,mWidth/2,mWidth/2); - }else if(i==3){ - canvas.rotate(120,mWidth/2,mWidth/2); + if (i == 0) { + canvas.rotate(-120, mWidth / 2, mWidth / 2); + } else if (i == 1) { + canvas.rotate(-45, mWidth / 2, mWidth / 2); + } else if (i == 2) { + canvas.rotate(45, mWidth / 2, mWidth / 2); + } else if (i == 3) { + canvas.rotate(120, mWidth / 2, mWidth / 2); } - canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint); + canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint); canvas.restore(); } } @@ -331,24 +371,25 @@ /** * ��������������� + * * @param canvas */ - private void drawJianbianCircle(Canvas canvas){ + private void drawJianbianCircle(Canvas canvas) { mSweepGradient = new SweepGradient(mWidth / 2, mWidth / 2, mshaderColor, null); mShaderPaint.setShader(mSweepGradient); canvas.drawArc(new RectF(mShaderWidth + widthInner, mShaderWidth + widthInner, mWidth - mShaderWidth - widthInner, mWidth - mShaderWidth - widthInner), 120, 300, false, mShaderPaint); //��������������� canvas.save(); canvas.rotate(75, mWidth / 2, mWidth / 2); - canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine); + canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine); canvas.restore(); canvas.save(); canvas.rotate(0, mWidth / 2, mWidth / 2); - canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine); + canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine); canvas.restore(); canvas.save(); canvas.rotate(-75, mWidth / 2, mWidth / 2); - canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine); + canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine); canvas.restore(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9cd1f3f..11e3d96 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ <resources> <string name="app_name">���������</string> + <string name="app_name_text">���������Text</string> <string name="action_settings">Settings</string> <string name="soft_update_no">���������������������</string> diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 -- Gitblit v1.8.0