陈奇
2018-11-02 75e83be13a8c4ccf081c4dc07a262e4096783c7e
[*]修改电磁版本 配合电子修改bug
1 files added
26 files modified
374 ■■■■■ changed files
.gradle/4.1/fileHashes/fileHashes.bin patch | view | raw | blame | history
.gradle/4.1/fileHashes/fileHashes.lock patch | view | raw | blame | history
.gradle/4.1/fileHashes/resourceHashesCache.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/classAnalysis.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/jarAnalysis.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/javaCompile.lock patch | view | raw | blame | history
.gradle/4.1/javaCompile/taskHistory.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/taskJars.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/fileSnapshots.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/taskHistory.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/taskHistory.lock patch | view | raw | blame | history
FastBleLib/FastBleLib.iml 1 ●●●● patch | view | raw | blame | history
FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java 6 ●●●●● patch | view | raw | blame | history
FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java 9 ●●●●● patch | view | raw | blame | history
andbrickslib/andbrickslib.iml 41 ●●●● patch | view | raw | blame | history
app/app.iml 27 ●●●●● patch | view | raw | blame | history
app/build.gradle 39 ●●●●● patch | view | raw | blame | history
app/src/main/AndroidManifest.xml 50 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java 5 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/adapter/SongAdapter.java 1 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java 10 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/common/AppConfig.java 1 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/common/VersionConstants.java 12 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java 128 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/ui/PanelView.java 43 ●●●●● patch | view | raw | blame | history
app/src/main/res/values/strings.xml 1 ●●●● patch | view | raw | blame | history
gradlew patch | view | raw | blame | history
.gradle/4.1/fileHashes/fileHashes.bin
Binary files differ
.gradle/4.1/fileHashes/fileHashes.lock
Binary files differ
.gradle/4.1/fileHashes/resourceHashesCache.bin
Binary files differ
.gradle/4.1/javaCompile/classAnalysis.bin
Binary files differ
.gradle/4.1/javaCompile/jarAnalysis.bin
Binary files differ
.gradle/4.1/javaCompile/javaCompile.lock
Binary files differ
.gradle/4.1/javaCompile/taskHistory.bin
Binary files differ
.gradle/4.1/javaCompile/taskJars.bin
Binary files differ
.gradle/4.1/taskHistory/fileSnapshots.bin
Binary files differ
.gradle/4.1/taskHistory/taskHistory.bin
Binary files differ
.gradle/4.1/taskHistory/taskHistory.lock
Binary 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>
gradlew
old mode 100644 new mode 100755