.gradle/4.1/fileHashes/fileHashes.binBinary files differ
.gradle/4.1/fileHashes/fileHashes.lockBinary files differ
.gradle/4.1/fileHashes/resourceHashesCache.binBinary files differ
.gradle/4.1/javaCompile/classAnalysis.binBinary files differ
.gradle/4.1/javaCompile/jarAnalysis.binBinary files differ
.gradle/4.1/javaCompile/javaCompile.lockBinary files differ
.gradle/4.1/javaCompile/taskHistory.binBinary files differ
.gradle/4.1/javaCompile/taskJars.binBinary files differ
.gradle/4.1/taskHistory/fileSnapshots.binBinary files differ
.gradle/4.1/taskHistory/taskHistory.binBinary files differ
.gradle/4.1/taskHistory/taskHistory.lockBinary files differ
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" /> 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(); 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)); } }); 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> 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> 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"] } } } app/src/main/AndroidManifest.xml
@@ -44,29 +44,48 @@ <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> 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)); } } 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; 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() { 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"; app/src/main/java/com/moral/yunfushao/common/VersionConstants.java
New file @@ -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"; } 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; 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) { 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) { 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,38 +832,48 @@ 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(); } @@ -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)); 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; @@ -75,8 +76,11 @@ private Bitmap mBitmap; private float percent = 0;//百分比数据 private float percent2 = (float) 0.27;//百分比数据 private String statusStr = "未连接"; private ValueAnimator anim; public void setStatusStr(String statusStr){ this.statusStr = statusStr; @@ -85,7 +89,13 @@ 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) { @@ -150,6 +160,7 @@ mBitPaint.setFilterBitmap(true); mBitPaint.setDither(true); mBitmap = ((BitmapDrawable)mContext.getResources().getDrawable(R.mipmap.zhizhen)).getBitmap(); // startAnimation(); } @Override @@ -173,6 +184,30 @@ 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); @@ -190,6 +225,8 @@ float bitH = circleR; float bitW = bitH*0.448f; canvas.save(); 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); @@ -205,11 +242,13 @@ 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.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){ @@ -245,6 +284,7 @@ /** * 画刻度文字 * * @param canvas */ private void drawTextKedu(Canvas canvas){ @@ -331,6 +371,7 @@ /** * 画渐变圆环 * * @param canvas */ private void drawJianbianCircle(Canvas canvas){ 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> gradlewold mode 100644 new mode 100755