在研强的版本上添加pcba测试功能项,
authorsnickersun <scy@incartech.cn>
Sat, 16 Nov 2019 02:53:19 +0000 (10:53 +0800)
committersnickersun <scy@incartech.cn>
Sat, 16 Nov 2019 02:53:19 +0000 (10:53 +0800)
并增加GPS搜星值的显示,方便调试使用。

297 files changed:
.gitignore [new file with mode: 0644]
app/AndroidSystem.jks [new file with mode: 0644]
app/build.gradle [new file with mode: 0644]
app/libs/IAtChannel_classes.jar [new file with mode: 0644]
app/libs/LineWrapContainer.aar [new file with mode: 0644]
app/libs/watch_framework.jar [new file with mode: 0644]
app/lint.xml [new file with mode: 0644]
app/release/FactoryMode.apk [new file with mode: 0644]
app/release/output.json [new file with mode: 0644]
app/src/main/AndroidManifest.xml [new file with mode: 0644]
app/src/main/java/mobile/miki/APNBean.java [new file with mode: 0644]
app/src/main/java/mobile/miki/BaseActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/BatteryTestActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/BlooToothActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/BrightnessTest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/CameraPreview.java [new file with mode: 0644]
app/src/main/java/mobile/miki/CameraSurfaceView.java [new file with mode: 0644]
app/src/main/java/mobile/miki/CompassSurfaceView.java [new file with mode: 0644]
app/src/main/java/mobile/miki/Constants.java [new file with mode: 0644]
app/src/main/java/mobile/miki/DSPActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/DialerTestActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/GpsTest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/GravitySensorActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/GridAdapter.java [new file with mode: 0644]
app/src/main/java/mobile/miki/HeartRate.java [new file with mode: 0644]
app/src/main/java/mobile/miki/KeysTestActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/LCDtestAgeing.java [new file with mode: 0644]
app/src/main/java/mobile/miki/MikeTest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/MotorTestActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/MyApplication.java [new file with mode: 0644]
app/src/main/java/mobile/miki/PhaseCheckParse.java [new file with mode: 0644]
app/src/main/java/mobile/miki/PictureRender.java [new file with mode: 0644]
app/src/main/java/mobile/miki/RecordActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/RingtoneActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/SimDetectActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/SystemMemory.java [new file with mode: 0644]
app/src/main/java/mobile/miki/TouchScreen_Activity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/TouchTest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/UltravioletMonitorActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/VUMeter.java [new file with mode: 0644]
app/src/main/java/mobile/miki/VersionActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/WifiTestActiviy.java [new file with mode: 0644]
app/src/main/java/mobile/miki/adapter/AgeingListAdapter.java [new file with mode: 0644]
app/src/main/java/mobile/miki/adapter/ListViewAdapter.java [new file with mode: 0644]
app/src/main/java/mobile/miki/adapter/TestMainListAdapter.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingBaseActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingCameraPreview.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingLCDtest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingMikeTest.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingModeActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingMotorTestActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingRingtoneActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/ageingmode/AgeingService.java [new file with mode: 0644]
app/src/main/java/mobile/miki/flow/DownLoad.java [new file with mode: 0644]
app/src/main/java/mobile/miki/flow/GetDownloadUrl.java [new file with mode: 0644]
app/src/main/java/mobile/miki/lcd/LcdActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/lcd/LcdJudgActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/mainui/ButtonViewTwo.java [new file with mode: 0644]
app/src/main/java/mobile/miki/mainui/FlagPositionActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/mainui/TestMainActivity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/mainui/TestMainList.java [new file with mode: 0644]
app/src/main/java/mobile/miki/touchscreen/SurfaceViewAcitvity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/touchscreen/TouchScreen_Activity.java [new file with mode: 0644]
app/src/main/java/mobile/miki/touchscreen/TouchScreen_HandWriting.java [new file with mode: 0644]
app/src/main/java/mobile/miki/touchscreen/TouchScreen_ShellExe.java [new file with mode: 0644]
app/src/main/java/mobile/miki/util/CrashHandler.java [new file with mode: 0644]
app/src/main/java/mobile/miki/util/FTUtils.java [new file with mode: 0644]
app/src/main/java/mobile/miki/util/IATUtils.java [new file with mode: 0644]
app/src/main/java/mobile/miki/util/Logger.java [new file with mode: 0644]
app/src/main/java/mobile/miki/util/StringUtil.java [new file with mode: 0644]
app/src/main/jni/Android.mk [new file with mode: 0644]
app/src/main/jni/Application.mk [new file with mode: 0644]
app/src/main/jni/dbmd4_test_jni.cpp [new file with mode: 0644]
app/src/main/jni/heartrate.cpp [new file with mode: 0644]
app/src/main/res/color/button_common_fail_text.xml [new file with mode: 0644]
app/src/main/res/color/button_common_green_text.xml [new file with mode: 0644]
app/src/main/res/color/button_common_red_text.xml [new file with mode: 0644]
app/src/main/res/color/button_common_white_text.xml [new file with mode: 0644]
app/src/main/res/drawable-hdpi/border_view_finder.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_general_default.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_general_pressed.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_red_n.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_red_s.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_shot_photo_repeat.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_special_default.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/btn_special_nrolm.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/charging_bt.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/content_top_bg_02_gray_1.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/cross.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/default_bg.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ex_doc.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ex_folder.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/focus1.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/focus2.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_bluetooth.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_bright.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_charging.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_cmmb.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_cmotor.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_compass.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_dictance.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_flashlight.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_fm.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_gps.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_gravity.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_headset.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_keys.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_launcher.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_left.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_light.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_magnetic.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_mcamera.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_mic.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_motor.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_nandflash.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_needle.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_ok.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_phone.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_power.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_receiver.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_right.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_ringtone.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_screen.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_sdcard.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_signal.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_sim.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_touch_screan.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_touch_screan1.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_tv.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_update_launcher.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_version.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/ic_wifi.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/icon_phone.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/list_line.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/pic1.jpg [new file with mode: 0644]
app/src/main/res/drawable-hdpi/pic2.jpg [new file with mode: 0644]
app/src/main/res/drawable-hdpi/pic3.jpg [new file with mode: 0644]
app/src/main/res/drawable-hdpi/pic4.jpg [new file with mode: 0644]
app/src/main/res/drawable-hdpi/pic5.jpg [new file with mode: 0644]
app/src/main/res/drawable-hdpi/point.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/popup_bg_line.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/sd_shengji.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/set_normal.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/set_pressed.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/setting_title_bg.9.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/target.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/uncharging_bt.png [new file with mode: 0644]
app/src/main/res/drawable-hdpi/vumeter.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/default_bg.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_bluetooth.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_cmmb.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_cmotor.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_dictance.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_flashlight.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_fm.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_gps.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_gravity.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_headset.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_keys.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_launcher.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_light.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_magnetic.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_mcamera.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_mic.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_motor.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_nandflash.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_ok.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_power.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_receiver.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_ringtone.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_sdcard.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_signal.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_sim.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_touch_screan.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_touch_screan1.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_tv.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_version.png [new file with mode: 0644]
app/src/main/res/drawable-ldpi/ic_wifi.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/bg_daytime.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/btn_shot_photo_repeat.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_bluetooth.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_cmotor.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_gps.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_gravity.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_keys.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_launcher.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_light.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_mcamera.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_mic.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_motor.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_ok.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_phone.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_tv.png [new file with mode: 0644]
app/src/main/res/drawable-mdpi/ic_wifi.png [new file with mode: 0644]
app/src/main/res/drawable-xhdpi/ic_bluetooth.png [new file with mode: 0644]
app/src/main/res/drawable-xhdpi/ic_phone.png [new file with mode: 0644]
app/src/main/res/drawable-xhdpi/ic_wifi.png [new file with mode: 0644]
app/src/main/res/drawable/button_common_green_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/button_common_red_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/button_common_white_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/checkbox_normal.png [new file with mode: 0644]
app/src/main/res/drawable/checkbox_pressed.png [new file with mode: 0644]
app/src/main/res/drawable/checkbox_style.xml [new file with mode: 0644]
app/src/main/res/drawable/gs_1_d.png [new file with mode: 0644]
app/src/main/res/drawable/gs_1_l.png [new file with mode: 0644]
app/src/main/res/drawable/gs_1_r.png [new file with mode: 0644]
app/src/main/res/drawable/gs_1_u.png [new file with mode: 0644]
app/src/main/res/drawable/gs_2_d.png [new file with mode: 0644]
app/src/main/res/drawable/gs_2_l.png [new file with mode: 0644]
app/src/main/res/drawable/gs_2_r.png [new file with mode: 0644]
app/src/main/res/drawable/gs_2_u.png [new file with mode: 0644]
app/src/main/res/drawable/gs_center.png [new file with mode: 0644]
app/src/main/res/drawable/half_corner_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/ic_batterytest.png [new file with mode: 0644]
app/src/main/res/drawable/ic_bglighttest.png [new file with mode: 0644]
app/src/main/res/drawable/ic_imeisntest.png [new file with mode: 0644]
app/src/main/res/drawable/ic_lcd.png [new file with mode: 0644]
app/src/main/res/drawable/ic_otgtest.png [new file with mode: 0644]
app/src/main/res/drawable/ic_phone.png [new file with mode: 0644]
app/src/main/res/drawable/ic_ramromtest.png [new file with mode: 0644]
app/src/main/res/drawable/listpress.xml [new file with mode: 0644]
app/src/main/res/drawable/test_set_bg.xml [new file with mode: 0644]
app/src/main/res/layout/activity_main.xml [new file with mode: 0644]
app/src/main/res/layout/ageing_mode_activity.xml [new file with mode: 0644]
app/src/main/res/layout/ageing_mode_select.xml [new file with mode: 0644]
app/src/main/res/layout/batterytest.xml [new file with mode: 0644]
app/src/main/res/layout/bglight_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/blooteeth_layout.xml [new file with mode: 0644]
app/src/main/res/layout/bluethooth_test_layouat.xml [new file with mode: 0644]
app/src/main/res/layout/camera_motor_test.xml [new file with mode: 0644]
app/src/main/res/layout/camera_preview_layout.xml [new file with mode: 0644]
app/src/main/res/layout/dialer_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/dig_layout_testlist.xml [new file with mode: 0644]
app/src/main/res/layout/download.xml [new file with mode: 0644]
app/src/main/res/layout/dsp_layout.xml [new file with mode: 0644]
app/src/main/res/layout/gps_test_new.xml [new file with mode: 0644]
app/src/main/res/layout/gravity_sensor_layout.xml [new file with mode: 0644]
app/src/main/res/layout/grid_cell.xml [new file with mode: 0644]
app/src/main/res/layout/heartrate_layout.xml [new file with mode: 0644]
app/src/main/res/layout/keys_test_item.xml [new file with mode: 0644]
app/src/main/res/layout/keys_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/lcd.xml [new file with mode: 0644]
app/src/main/res/layout/lcd_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/light_sensor_layout.xml [new file with mode: 0644]
app/src/main/res/layout/list_item.xml [new file with mode: 0644]
app/src/main/res/layout/magnetic_sensor_layout.xml [new file with mode: 0644]
app/src/main/res/layout/main.xml [new file with mode: 0644]
app/src/main/res/layout/mic_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/mode_select_activity.xml [new file with mode: 0644]
app/src/main/res/layout/modify_imei.xml [new file with mode: 0644]
app/src/main/res/layout/motor_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/record_activity.xml [new file with mode: 0644]
app/src/main/res/layout/ringtone_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/sim_detect_layout.xml [new file with mode: 0644]
app/src/main/res/layout/sim_lock_settings.xml [new file with mode: 0644]
app/src/main/res/layout/success_fail.xml [new file with mode: 0644]
app/src/main/res/layout/systemmemory_test_layout.xml [new file with mode: 0644]
app/src/main/res/layout/test_brightness.xml [new file with mode: 0644]
app/src/main/res/layout/test_mike.xml [new file with mode: 0644]
app/src/main/res/layout/test_result.xml [new file with mode: 0644]
app/src/main/res/layout/test_result_item.xml [new file with mode: 0644]
app/src/main/res/layout/testmain_adapter.xml [new file with mode: 0644]
app/src/main/res/layout/touchscreen.xml [new file with mode: 0644]
app/src/main/res/layout/touchscreen_verification.xml [new file with mode: 0644]
app/src/main/res/layout/update_listitem.xml [new file with mode: 0644]
app/src/main/res/layout/update_main.xml [new file with mode: 0644]
app/src/main/res/layout/urovo_ayout_button_two.xml [new file with mode: 0644]
app/src/main/res/layout/urovo_layout_lcd_tv.xml [new file with mode: 0644]
app/src/main/res/layout/urovo_layout_listline.xml [new file with mode: 0644]
app/src/main/res/layout/urovo_layout_table.xml [new file with mode: 0644]
app/src/main/res/layout/urovo_layout_test_result.xml [new file with mode: 0644]
app/src/main/res/layout/version_layout.xml [new file with mode: 0644]
app/src/main/res/layout/wifi_test_layout.xml [new file with mode: 0644]
app/src/main/res/raw/chongerfei.mp3 [new file with mode: 0644]
app/src/main/res/raw/liebao.mp3 [new file with mode: 0644]
app/src/main/res/values-ro/strings.xml [new file with mode: 0644]
app/src/main/res/values-sw600dp/dimens.xml [new file with mode: 0644]
app/src/main/res/values-sw720dp-land/dimens.xml [new file with mode: 0644]
app/src/main/res/values-v11/styles.xml [new file with mode: 0644]
app/src/main/res/values-v14/styles.xml [new file with mode: 0644]
app/src/main/res/values-zh-rCN/arrays.xml [new file with mode: 0644]
app/src/main/res/values-zh-rCN/strings.xml [new file with mode: 0644]
app/src/main/res/values/arrays.xml [new file with mode: 0644]
app/src/main/res/values/colors.xml [new file with mode: 0644]
app/src/main/res/values/dimens.xml [new file with mode: 0644]
app/src/main/res/values/drawables.xml [new file with mode: 0644]
app/src/main/res/values/strings.xml [new file with mode: 0644]
app/src/main/res/values/styles.xml [new file with mode: 0644]
build.gradle [new file with mode: 0644]
factorymode.iml [new file with mode: 0644]
gradle/wrapper/gradle-wrapper.jar [new file with mode: 0644]
gradle/wrapper/gradle-wrapper.properties [new file with mode: 0644]
gradlew [new file with mode: 0644]
gradlew.bat [new file with mode: 0644]
settings.gradle [new file with mode: 0644]
watchlibrary/watchlibrary.iml [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..8e6426c
--- /dev/null
@@ -0,0 +1,7 @@
+.gradle/
+.idea/
+app/app.iml
+app/build/
+build/
+local.properties
+
diff --git a/app/AndroidSystem.jks b/app/AndroidSystem.jks
new file mode 100644 (file)
index 0000000..05c5f79
Binary files /dev/null and b/app/AndroidSystem.jks differ
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644 (file)
index 0000000..d371f2e
--- /dev/null
@@ -0,0 +1,57 @@
+apply plugin: 'com.android.application'\r
+\r
+android {\r
+    signingConfigs {\r
+        key {\r
+            storeFile file("AndroidSystem.jks")\r
+            storePassword "android123456"\r
+            keyAlias "android"\r
+            keyPassword "android123456"\r
+        }\r
+    }\r
+    lintOptions {\r
+        checkReleaseBuilds false\r
+        abortOnError false\r
+    }\r
+    compileSdkVersion 20\r
+    defaultConfig {\r
+        applicationId "mobile.miki"\r
+        minSdkVersion 18\r
+        targetSdkVersion 20\r
+        versionCode 1\r
+        versionName "20191116-0900"\r
+    }\r
+    buildTypes {\r
+        release {\r
+            minifyEnabled false\r
+            signingConfig signingConfigs.key\r
+//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'\r
+        }\r
+        debug {\r
+            signingConfig signingConfigs.key\r
+        }\r
+    }\r
+    //打包后应用名称\r
+    applicationVariants.all { variant ->\r
+        variant.outputs.all { output ->\r
+            outputFileName = "FactoryMode.apk"\r
+        }\r
+    }\r
+    buildToolsVersion '27.0.3'\r
+\r
+    sourceSets {\r
+        main {\r
+            jni.srcDirs = []\r
+        }\r
+    }\r
+}\r
+\r
+dependencies {\r
+    implementation 'com.android.support:support-v4:20.0.0'\r
+    compileOnly files('libs/watch_framework.jar')\r
+    implementation 'com.squareup.okhttp3:okhttp:3.4.1'\r
+    implementation 'io.reactivex:rxandroid:1.2.1'\r
+    implementation 'com.liulishuo.filedownloader:library:1.6.3'\r
+    compileOnly files('libs/IAtChannel_classes.jar')\r
+    implementation files('libs/LineWrapContainer.aar')\r
+}\r
diff --git a/app/libs/IAtChannel_classes.jar b/app/libs/IAtChannel_classes.jar
new file mode 100644 (file)
index 0000000..aae79a5
Binary files /dev/null and b/app/libs/IAtChannel_classes.jar differ
diff --git a/app/libs/LineWrapContainer.aar b/app/libs/LineWrapContainer.aar
new file mode 100644 (file)
index 0000000..cdb200f
Binary files /dev/null and b/app/libs/LineWrapContainer.aar differ
diff --git a/app/libs/watch_framework.jar b/app/libs/watch_framework.jar
new file mode 100644 (file)
index 0000000..71aaa3f
Binary files /dev/null and b/app/libs/watch_framework.jar differ
diff --git a/app/lint.xml b/app/lint.xml
new file mode 100644 (file)
index 0000000..8423c0e
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<lint>
+</lint>
\ No newline at end of file
diff --git a/app/release/FactoryMode.apk b/app/release/FactoryMode.apk
new file mode 100644 (file)
index 0000000..bb0f9d0
Binary files /dev/null and b/app/release/FactoryMode.apk differ
diff --git a/app/release/output.json b/app/release/output.json
new file mode 100644 (file)
index 0000000..afaee1e
--- /dev/null
@@ -0,0 +1 @@
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"20191116-0900","enabled":true,"outputFile":"FactoryMode.apk","fullName":"release","baseName":"release"},"path":"FactoryMode.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644 (file)
index 0000000..2d7258e
--- /dev/null
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="mobile.miki"
+    android:sharedUserId="android.uid.system">
+
+    <!-- android:sharedUserId="android.uid.phone" -->
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+    <!--<uses-permission android:name="android.permission.WAKE_LOCK" />-->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.MASTER_CLEAR" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
+    <uses-permission android:name="android.permission.CAMERA" />
+
+    <uses-feature android:name="android.hardware.camera" />
+    <uses-feature android:name="android.hardware.autofocus" />
+
+    <uses-permission android:name="android.permission.FLASHLIGHT" />
+    <uses-permission android:name="android.permission.HARDWARE_TEST" />
+    <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
+    <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
+    <uses-permission android:name="android.permission.REBOOT" />
+    <uses-permission android:name="com.google.android.gm.permission.WRITE_GMAIL" />
+    <uses-permission android:name="com.google.android.gm.permission.READ_GMAIL" />
+    <uses-permission android:name="android.permission.DEVICE_POWER" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
+    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
+    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
+    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
+    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
+    <uses-permission android:name="android.permission.BATTERY_STATS" />
+    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
+    <uses-permission android:name="android.permission.MOVE_PACKAGE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <!--<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />-->
+    <uses-permission android:name="android.permission.STATUS_BAR" />
+    <!--<uses-permission android:name="android.permission.CALL_PHONE" />-->
+    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
+    <!--<uses-permission android:name="android.permission.DEVICE_POWER" />-->
+    <!--<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />-->
+    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+
+    
+    <!-- android:name=".factory.util.TestResult" -->
+    <!-- android:name=".factory.util.TestResult" -->
+    <application
+        android:name=".MyApplication"
+        android:icon="@drawable/ic_gravity"
+        android:label="@string/app_name"
+         >
+        <activity
+            android:name=".mainui.TestMainList"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme" >
+            <intent-filter>
+                <action android:name="android.intent.action.htf" />
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <!--  <category android:name="android.intent.category.LAUNCHER" /> -->
+        </activity>
+        <activity
+            android:name=".GravitySensorActivity"
+            android:label="@string/gravity"
+             />
+        <activity
+            android:name=".MotorTestActivity"
+            android:label="@string/shakeTest"
+             />
+        <activity
+            android:name=".KeysTestActivity"
+            android:label="@string/keysTest"
+             >
+            <intent-filter>
+                <action android:name="com.eqc.OffHook.START"/>
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".SimDetectActivity"
+            android:label="@string/detectSim"
+             />
+        <activity
+            android:name=".BlooToothActivity"
+            android:label="@string/bluetooth"
+             >
+
+        </activity>
+        <activity
+            android:name=".WifiTestActiviy"
+            android:label="@string/wifitest"
+             />
+        <activity
+            android:name=".CameraPreview"
+            android:label="@string/cameraMotor"
+             />
+        <activity
+            android:name=".RingtoneActivity"
+            android:label="@string/ringtone"
+             />
+        <activity
+            android:name=".LCDtestAgeing"
+            android:label="@string/lcdTest_lsn"
+            
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
+        <activity
+            android:name=".DialerTestActivity"
+            android:label="@string/call_fun"
+             />
+        <activity
+            android:name=".BatteryTestActivity"
+            android:label="@string/powerBatteryTest"
+             />
+        <activity
+            android:name=".touchscreen.TouchScreen_HandWriting"
+            android:label="@string/TouchScreen" />
+        <activity
+            android:name=".touchscreen.TouchScreen_Activity"
+            android:label="@string/TouchScreen" />
+        <activity
+            android:name=".VersionActivity"
+            android:label="@string/deviceInfo"
+                                    
+            />
+        <activity
+            android:name=".touchscreen.SurfaceViewAcitvity"
+            android:label="@string/TouchScreen"
+            
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
+
+        <!-- add by tyy 2016.9.2 -->
+        <activity
+            android:launchMode="singleTask"
+            android:name=".mainui.TestMainActivity"
+            android:theme="@style/AppTheme" />
+        <activity
+            android:launchMode="singleTask"
+            android:name=".GpsTest"
+            android:label="@string/gps_test"
+             />
+        <activity
+            android:name=".TouchTest"
+            android:label="@string/TouchScreen"
+             />
+        <activity
+            android:name=".SystemMemory"
+            android:label="@string/ramromTest"
+             />
+        <activity
+            android:name=".DSPActivity"
+            android:label="@string/dsp"
+            />
+        <activity
+            android:name=".HeartRate"
+            android:label="@string/heartrate"
+            />
+        <activity
+            android:name=".MikeTest"
+            android:label="@string/mic_title"
+             />
+        <activity
+            android:name=".lcd.LcdJudgActivity"
+            android:label="@string/mic_title"
+            
+            android:theme="@style/AppTheme" />
+        <activity
+           android:launchMode="singleTask"
+            android:name=".lcd.LcdActivity"
+            android:label="@string/mic_title"
+             />
+         <activity android:label="@string/fmTest" android:name=".BrightnessTest"  />
+    
+        <activity
+            android:name=".ageingmode.AgeingModeActivity"
+             
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"/>
+        <activity
+            android:name=".mainui.ModeSelectActivity"
+            
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"/>
+        <activity
+            android:name=".mainui.FlagPositionActivity"
+            
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"
+            />
+        <activity
+            android:name=".RecordActivity"
+             
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"/>
+
+        <activity android:name=".flow.DownLoad"
+            
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"/>
+
+        <activity android:name=".UltravioletMonitorActivity"
+            
+            android:launchMode="singleTask"
+            android:theme="@style/AppTheme"/>
+
+        <activity
+            android:name=".ageingmode.AgeingRingtoneActivity"
+            
+            android:launchMode="singleTask"/>
+        <activity
+            android:name=".ageingmode.AgeingLCDtest"
+            
+            android:launchMode="singleTask"/>
+        <activity
+            android:name=".ageingmode.AgeingCameraPreview"
+            
+            android:launchMode="singleTask"/>
+        <activity
+            android:name=".ageingmode.AgeingMikeTest"
+            
+            android:launchMode="singleTask"/>
+        <activity
+            android:name=".ageingmode.AgeingMotorTestActivity"
+            
+            android:launchMode="singleTask"/>
+        
+        <service 
+            android:name=".ageingmode.AgeingService"
+            ></service>
+        
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/APNBean.java b/app/src/main/java/mobile/miki/APNBean.java
new file mode 100644 (file)
index 0000000..1f17251
--- /dev/null
@@ -0,0 +1,136 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+\r
+public class APNBean {\r
+    private String apn;\r
+    private String authenticationtype;\r
+    private String authtype;\r
+    private String carrier;\r
+    private String mcc;\r
+    private String mmsc;\r
+    private String mmsport;\r
+    private String mmsproxy;\r
+    private String mnc;\r
+    private String password;\r
+    private String port;\r
+    private String server;\r
+    private String type;\r
+    private String user;\r
+    \r
+    public String getAuthenticationtype() {\r
+        return this.authenticationtype;\r
+    }\r
+    \r
+    public void setAuthenticationtype(String authenticationtype) {\r
+       this.authenticationtype = authenticationtype;\r
+    }\r
+    \r
+    public String getAuthtype() {\r
+        return this.authtype;\r
+    }\r
+    \r
+    public void setAuthtype(String authtype) {\r
+        this.authtype = authtype;\r
+    }\r
+    \r
+    public String getCarrier() {\r
+        return this.carrier;\r
+    }\r
+    \r
+    public void setCarrier(String carrier) {\r
+       this.carrier = carrier;\r
+    }\r
+    \r
+    public String getMcc() {\r
+        return this.mcc;\r
+    }\r
+    \r
+    public void setMcc(String mcc) {\r
+       this.mcc = mcc;\r
+    }\r
+    \r
+    public String getMnc() {\r
+        return this.mnc;\r
+    }\r
+    \r
+    public void setMnc(String mnc) {\r
+       this.mnc = mnc;\r
+    }\r
+    \r
+    public String getApn() {\r
+        return this.apn;\r
+    }\r
+    \r
+    public void setApn(String apn) {\r
+       this.apn = apn;\r
+    }\r
+    \r
+    public String getMmsc() {\r
+        return this.mmsc;\r
+    }\r
+    \r
+    public void setMmsc(String mmsc) {\r
+       this.mmsc = mmsc;\r
+    }\r
+    \r
+    public String getMmsproxy() {\r
+        return this.mmsproxy;\r
+    }\r
+    \r
+    public void setMmsproxy(String mmsproxy) {\r
+       this.mmsproxy = mmsproxy;\r
+    }\r
+    \r
+    public String getMmsport() {\r
+        return this.mmsport;\r
+    }\r
+    \r
+    public void setMmsport(String mmsport) {\r
+       this.mmsport = mmsport;\r
+    }\r
+    \r
+    public String getType() {\r
+        return this.type;\r
+    }\r
+    \r
+    public void setType(String type) {\r
+       this.type = type;\r
+    }\r
+    \r
+    public String getUser() {\r
+        return this.user;\r
+    }\r
+    \r
+    public void setUser(String user) {\r
+       this.user = user;\r
+    }\r
+    \r
+    public String getPassword() {\r
+        return this.password;\r
+    }\r
+    \r
+    public void setPassword(String password) {\r
+       this.password = password;\r
+    }\r
+    \r
+    public String getPort() {\r
+        return this.port;\r
+    }\r
+    \r
+    public void setPort(String port) {\r
+       this.port = port;\r
+    }\r
+    \r
+    public String getServer() {\r
+        return this.server;\r
+    }\r
+    \r
+    public void setServer(String server) {\r
+       this.server = server;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/BaseActivity.java b/app/src/main/java/mobile/miki/BaseActivity.java
new file mode 100644 (file)
index 0000000..fc3b1a4
--- /dev/null
@@ -0,0 +1,105 @@
+package mobile.miki;\r
+\r
+import android.app.Activity;\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.PowerManager;\r
+import android.os.PowerManager.WakeLock;\r
+import android.util.Log;\r
+import android.view.View;\r
+\r
+public class BaseActivity extends Activity {\r
+    private static final String TAG = "BaseActivity";\r
+    private WakeLock wakeLock = null;\r
+    private PowerManager powerManager = null; \r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);  \r
+        wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "FactoryMode");\r
+        IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);\r
+        registerReceiver(homePressReceiver, homeFilter);\r
+               if(wakeLock != null) {\r
+                       //是否需计算锁的数量  \r
+                       wakeLock.setReferenceCounted(false);  \r
+                       //请求屏幕常亮,onResume()方法中执行  \r
+                       wakeLock.acquire();\r
+                       handler.postDelayed(runnable, 1000 * 60 * 30); //30分钟不灭屏\r
+                       \r
+               }\r
+        \r
+    }\r
+    \r
+    @Override\r
+    protected void onDestroy() {\r
+       super.onDestroy();\r
+       if(wakeLock != null) {\r
+               //取消屏幕常亮,onPause()方法中执行  \r
+               wakeLock.release(); \r
+               wakeLock = null;\r
+       }\r
+       if(handler != null) {\r
+               handler.removeCallbacks(runnable);\r
+       }\r
+\r
+       if (homePressReceiver != null) {\r
+           unregisterReceiver(homePressReceiver);\r
+        }\r
+    }\r
+    \r
+    Handler handler=new Handler();\r
+    Runnable runnable=new Runnable() {\r
+        @Override\r
+        public void run() {\r
+               if(wakeLock != null) {\r
+                       //取消屏幕常亮,onPause()方法中执行  \r
+               wakeLock.release(); \r
+               wakeLock = null;\r
+               }\r
+            \r
+        }\r
+    };\r
+    \r
+    \r
+    //HOME键监听\r
+    private BroadcastReceiver homePressReceiver = new BroadcastReceiver() {\r
+        final String SYSTEM_DIALOG_REASON_KEY = "reason";\r
+        final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";\r
+        @Override\r
+        public void onReceive(Context context, Intent intent) {\r
+            // TODO Auto-generated method stub\r
+            String action = intent.getAction();\r
+            if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){\r
+                String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);\r
+                if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){\r
+                    if(handler != null) {\r
+                               handler.removeCallbacks(runnable);\r
+                       }\r
+                    if(wakeLock != null) {\r
+                               //取消屏幕常亮,onPause()方法中执行  \r
+                       wakeLock.release(); \r
+                       wakeLock = null;\r
+                       }\r
+                }\r
+            }\r
+        }\r
+    };\r
+    \r
+    public void testSuccess(View view) {\r
+        Log.i("BaseActivity", "testSuccess");\r
+        sendBroadcast(new Intent("mobile.miki.testsuccess"));\r
+    }\r
+    \r
+    public void testFail(View view) {\r
+        Log.i("BaseActivity", "testFail");\r
+        sendBroadcast(new Intent("mobile.miki.testfail"));\r
+    }\r
+\r
+\r
+    \r
+}\r
diff --git a/app/src/main/java/mobile/miki/BatteryTestActivity.java b/app/src/main/java/mobile/miki/BatteryTestActivity.java
new file mode 100644 (file)
index 0000000..d554bd2
--- /dev/null
@@ -0,0 +1,217 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.BatteryManager;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.widget.ImageView;\r
+import android.widget.TextView;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+\r
+public class BatteryTestActivity extends BaseActivity implements\r
+               OnClickListener {\r
+       private static final String PLUGGED = "plugged";\r
+       private static final String LEVEL = "level";\r
+       private static final String SCALE = "scale";\r
+       private static final String VOLTAGE = "voltage";\r
+       private static final String TEMPERATURE = "temperature";\r
+       private static final String STATUS = "status";\r
+       private static final String HEALTH = "health";\r
+       private boolean mReceiverTag = false;   //广播接受者标识\r
+       TextView bt_status;\r
+       ImageView bt_bg;\r
+       TextView bt_vol;\r
+       TextView bt_temp;\r
+       TextView bt_level;\r
+       TextView battery_health;\r
+\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setContentView(R.layout.batterytest);\r
+               \r
+               bt_bg = (ImageView) findViewById(R.id.imageView);\r
+               bt_status = (TextView) findViewById(R.id.bt_usb_ac);\r
+\r
+               bt_vol = (TextView) findViewById(R.id.battery_voltage_cus);\r
+\r
+               bt_temp = (TextView) findViewById(R.id.temperature_cus);\r
+\r
+               bt_level = (TextView) findViewById(R.id.bt_level);\r
+\r
+               battery_health = (TextView) findViewById(R.id.battery_health);\r
+\r
+               registerReceiver();\r
+\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+                       pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+               }\r
+       }\r
+       \r
+       //代码中动态注册广播\r
+       private void registerReceiver() {\r
+        if (!mReceiverTag){     //在注册广播接受者的时候 判断是否已被注册,避免重复多次注册广播\r
+            mReceiverTag = true;    //标识值 赋值为 true 表示广播已被注册\r
+            mIntentFilter = new IntentFilter();\r
+               mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);\r
+               registerReceiver(mIntentReceiver, mIntentFilter);\r
+        }\r
+       }\r
+       \r
+       //注销广播\r
+       private void unregisterReceiver() {\r
+        if (mReceiverTag) {   //判断广播是否注册\r
+             mReceiverTag = false;   //Tag值 赋值为false 表示该广播已被注销\r
+             this.unregisterReceiver(mIntentReceiver);   //注销广播\r
+        }\r
+\r
+       }\r
+\r
+       private final String tenthsToFixedString(int x) {\r
+               int tens = x / 10;\r
+               // use Math.abs to avoid "-9.-9" about -99\r
+               return Integer.toString(tens) + "." + Math.abs(x - 10 * tens);\r
+       }\r
+\r
+       private IntentFilter mIntentFilter;\r
+       private IntentFilter mIntentFilterSDCard;\r
+\r
+       private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {\r
+\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       String action = arg1.getAction();\r
+                       if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {\r
+                               int plugType = arg1.getIntExtra(PLUGGED, 0);\r
+\r
+                               bt_level.setText("" + arg1.getIntExtra(LEVEL, 0));\r
+                               bt_vol.setText("" + arg1.getIntExtra(VOLTAGE, 0) + " "\r
+                                               + getString(R.string.battery_info_voltage_units));\r
+                               bt_temp.setText(""\r
+                                               + tenthsToFixedString(arg1.getIntExtra(TEMPERATURE, 0))\r
+                                               + getString(R.string.battery_info_temperature_units));\r
+\r
+                               int status = arg1.getIntExtra(STATUS,\r
+                                               BatteryManager.BATTERY_STATUS_UNKNOWN);\r
+                               String statusString = null;\r
+                               if (status == BatteryManager.BATTERY_STATUS_CHARGING) {\r
+                                       statusString = getString(R.string.battery_info_status_charging);\r
+                                       if (plugType > 0) {\r
+                                               statusString = statusString\r
+                                                               + " "\r
+                                                               + getString((plugType == BatteryManager.BATTERY_PLUGGED_AC) ? R.string.battery_info_status_charging_ac\r
+                                                                               : R.string.battery_info_status_charging_usb);\r
+                                       }\r
+                                       bt_bg.setBackgroundResource(R.drawable.charging_bt);\r
+                               } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {\r
+                                       statusString = getString(R.string.battery_info_status_discharging);\r
+                                       bt_bg.setBackgroundResource(R.drawable.uncharging_bt);\r
+                               } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {\r
+                                       statusString = getString(R.string.battery_info_status_not_charging);\r
+                                       bt_bg.setBackgroundResource(R.drawable.uncharging_bt);\r
+                               } else if (status == BatteryManager.BATTERY_STATUS_FULL) {\r
+                                       statusString = getString(R.string.battery_info_status_full);\r
+                               } else {\r
+                                       statusString = getString(R.string.battery_info_status_unknown);\r
+                                       bt_bg.setBackgroundResource(R.drawable.uncharging_bt);\r
+                               }\r
+                               bt_status.setText(statusString);\r
+\r
+                               int health = arg1.getIntExtra(HEALTH,\r
+                                               BatteryManager.BATTERY_HEALTH_UNKNOWN);\r
+                               String healthString;\r
+                               if (health == BatteryManager.BATTERY_HEALTH_GOOD) {\r
+                                       healthString = getString(R.string.battery_info_health_good);\r
+                               } else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) {\r
+                                       healthString = getString(R.string.battery_info_health_overheat);\r
+                               } else if (health == BatteryManager.BATTERY_HEALTH_DEAD) {\r
+                                       healthString = getString(R.string.battery_info_health_dead);\r
+                               } else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) {\r
+                                       healthString = getString(R.string.battery_info_health_over_voltage);\r
+                               } else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) {\r
+                                       healthString = getString(R.string.battery_info_health_unspecified_failure);\r
+                               } else {\r
+                                       healthString = getString(R.string.battery_info_health_unknown);\r
+                               }\r
+                               battery_health.setText(healthString);\r
+                       }\r
+               }\r
+       };\r
+\r
+       @Override\r
+       public void onPause() {\r
+               super.onPause();\r
+       }\r
+       \r
+       @Override\r
+       protected void onDestroy() {\r
+               unregisterReceiver();\r
+               super.onDestroy();\r
+       }\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, SystemMemory.class);\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("watchbattery", "true").commit();\r
+\r
+                       finish();\r
+\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("watchbattery", "false").commit();\r
+                       finish();\r
+\r
+                       break;\r
+               }\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/BlooToothActivity.java b/app/src/main/java/mobile/miki/BlooToothActivity.java
new file mode 100644 (file)
index 0000000..8d68a20
--- /dev/null
@@ -0,0 +1,265 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.app.ProgressDialog;\r
+import android.bluetooth.BluetoothAdapter;\r
+import android.bluetooth.BluetoothDevice;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.widget.ListView;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+\r
+import mobile.miki.adapter.ListViewAdapter;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+import mobile.miki.util.StringUtil;\r
+\r
+public class BlooToothActivity extends BaseActivity implements OnClickListener {\r
+    private static final int REQUEST_ENABLE_BT = 2;\r
+    private ProgressDialog dialogBar;\r
+    private ListView listView;\r
+    private ArrayList<HashMap<String, Object>> listViewData;\r
+    private BluetoothAdapter mBtAdapter;\r
+    private final BroadcastReceiver mReceiver;\r
+    private HashMap<String, Object> map;\r
+    private boolean flag = true;\r
+    \r
+    private ButtonViewTwo buttonView;\r
+       boolean running;\r
+    \r
+    public BlooToothActivity() {\r
+        this.listViewData = new ArrayList();\r
+        map = null;\r
+        mReceiver = new BroadcastReceiver() {\r
+            \r
+            public void onReceive(Context context, Intent intent) {\r
+                String action = intent.getAction();\r
+                if("android.bluetooth.device.action.FOUND".equals(action)) {\r
+                    BluetoothDevice device = (BluetoothDevice)intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");\r
+                    if(device.getBondState() != 12) {\r
+                        //ProgressDialog dialogBar = this$0new HashMap();\r
+                       BlooToothActivity.this.map = new HashMap();\r
+                       BlooToothActivity.this.map.put(ListViewAdapter.NAME, StringUtil.isEmpty(device.getName()) ? "NULL" : device.getName());\r
+                       BlooToothActivity.this.map.put(ListViewAdapter.DESCRIBE, device.getAddress());\r
+                        ((ListViewAdapter)listView.getAdapter()).add(map);\r
+                        BlooToothActivity.this.dialogBar.dismiss();\r
+                        if(BlooToothActivity.this.map.size() > 0) {\r
+                               if(flag) {\r
+                                       pass();\r
+                               flag = false;\r
+                               }\r
+                               \r
+                        }\r
+                    }\r
+                    return;\r
+                }\r
+                if("android.bluetooth.adapter.action.DISCOVERY_FINISHED".equals(action)) {\r
+                    if(listView.getChildCount() == 0) {\r
+                        ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.noFoundDev));\r
+                    } else {\r
+                        ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.found) + listView.getChildCount() + getSourceString(R.string.tsb));\r
+                    }\r
+                    if(dialogBar.isShowing()) {\r
+                        dialogBar.dismiss();\r
+                    }\r
+                }\r
+            }\r
+        };\r
+    }\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+       super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.blooteeth_layout);\r
+        \r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+               }\r
+        \r
+        IntentFilter localIntentFilter1 = new IntentFilter("android.bluetooth.device.action.FOUND");\r
+        registerReceiver(this.mReceiver, localIntentFilter1);\r
+        IntentFilter localIntentFilter2 = new IntentFilter("android.bluetooth.adapter.action.DISCOVERY_FINISHED");\r
+        registerReceiver(this.mReceiver, localIntentFilter2);\r
+        this.listView = ((ListView)findViewById(R.id.lvDevice));\r
+        ArrayList localArrayList = this.listViewData;\r
+        String[] arrayOfString = new String[2];\r
+        arrayOfString[0] = ListViewAdapter.NAME;\r
+        arrayOfString[1] = ListViewAdapter.DESCRIBE;\r
+        int[] arrayOfInt = new int[2];\r
+        arrayOfInt[0] = R.id.name;\r
+        arrayOfInt[1] = R.id.describe;\r
+        ListViewAdapter localListViewAdapter = new ListViewAdapter(this, localArrayList, R.layout.list_item, arrayOfString, arrayOfInt);\r
+        this.listView.setAdapter(localListViewAdapter);\r
+        this.mBtAdapter = BluetoothAdapter.getDefaultAdapter();\r
+        this.dialogBar = new ProgressDialog(this);\r
+        this.dialogBar.setMax(100);\r
+        this.dialogBar.setProgress(0);\r
+        this.dialogBar.incrementProgressBy(1);\r
+        this.dialogBar.setMessage(getResources().getString(R.string.blScaning));\r
+        this.dialogBar.setProgressStyle(0);\r
+        scanDevice(null);\r
+    }\r
+    \r
+    public boolean openBlueTooth(View view) {\r
+        if(mBtAdapter != null) {\r
+            if(!mBtAdapter.isEnabled()) {\r
+                Intent enableIntent = new Intent("android.bluetooth.adapter.action.REQUEST_ENABLE");\r
+                startActivityForResult(enableIntent, 2);\r
+                return false;\r
+            }\r
+            ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blOpened));\r
+            return true;\r
+        }\r
+        ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blNoSerport));\r
+        return false;\r
+    }\r
+    \r
+    private String getSourceString(int id) {\r
+        return getResources().getString(id);\r
+    }\r
+    \r
+    public void scanDevice(View view) {\r
+        if(openBlueTooth(null)) {\r
+            if(mBtAdapter.isDiscovering()) {\r
+                mBtAdapter.cancelDiscovery();\r
+            }\r
+            mBtAdapter.startDiscovery();\r
+            dialogBar.show();\r
+        }\r
+    }\r
+    \r
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+        switch(requestCode) {\r
+            case 2:\r
+            {\r
+                if(resultCode == -0x1) {\r
+                    ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blOpened));\r
+                    if(mBtAdapter.isDiscovering()) {\r
+                        mBtAdapter.cancelDiscovery();\r
+                    }\r
+                    mBtAdapter.startDiscovery();\r
+                    dialogBar.show();\r
+                    return;\r
+                }\r
+                ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.bldenied));\r
+                break;\r
+            }\r
+        }\r
+    }\r
+    \r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+        if(mBtAdapter.isEnabled()) {\r
+               mBtAdapter.disable();\r
+        }\r
+        unregisterReceiver(mReceiver);\r
+    }\r
+    \r
+\r
+    public void pass() {\r
+               Toast.makeText(getApplicationContext(), getResources().getString(R.string.ins_gsensor_toast),\r
+                               Toast.LENGTH_SHORT).show();\r
+               buttonView.setSuccessColor();\r
+               \r
+               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("bt", "true").commit();\r
+               if (running) {\r
+                       new Handler() {\r
+                               @Override\r
+                               public void handleMessage(Message msg) {\r
+                                       super.handleMessage(msg);\r
+                                       switch (msg.what) {\r
+                                       case 0:\r
+                                               Intent intent;\r
+                                               intent = new Intent(BlooToothActivity.this, MotorTestActivity.class);\r
+                                               intent.putExtra("running", true);\r
+                                               startActivity(intent);\r
+                                               BlooToothActivity.this.finish();\r
+                                               break;\r
+\r
+                                       default:\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                       }.sendEmptyMessageDelayed(0, 1000);\r
+               }else{\r
+                       buttonView.btn_left.setClickable(true);\r
+               }\r
+       }\r
+    \r
+    @Override\r
+       protected void onResume() {\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               super.onResume();\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent;\r
+\r
+               intent = new Intent(this, MotorTestActivity.class);\r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("bt", "true")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("bt", "false")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/BrightnessTest.java b/app/src/main/java/mobile/miki/BrightnessTest.java
new file mode 100644 (file)
index 0000000..8e4826b
--- /dev/null
@@ -0,0 +1,357 @@
+package mobile.miki;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.PreferenceManager;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.SeekBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.io.FileInputStream;
+
+import mobile.miki.mainui.ButtonViewTwo;
+import mobile.miki.mainui.TestMainActivity;
+import mobile.miki.mainui.TestMainList;
+
+//import sim.android.mtkcit.CITActivity;
+//import sim.android.mtkcit.R;
+//import sim.android.mtkcit.AutoTestActivity;
+
+public class BrightnessTest extends BaseActivity
+               implements SeekBar.OnSeekBarChangeListener, android.view.View.OnClickListener {
+       /** Called when the activity is first created. */
+       TextView textView;
+       boolean bMaxBrightness;
+       boolean bAutoAdjust;
+       WindowManager.LayoutParams lp;
+       Window win;
+       SeekBar mseekBar;
+       private String mCurrentBrightness;
+       public static final int PCBA_TEST = 0;
+       public static final int MACHINE_TEST = 1;
+       int flag1 = 0;
+       int flag2 = 0;
+       String flag3;
+       private ButtonViewTwo buttonView;
+       boolean running;
+       private Handler mHandler;
+       private final int MSGID_LCD_RED = 0;
+       private final int MSGID_LCD_GREEN = 1;
+       private final int MSGID_LCD_BLUE = 2;
+       private final int MSGID_LCD_YELLOW = 4;
+       private final int MSGID_LCD_WHITE = 5;
+       private final int MSGID_LCD_OK = 6;
+
+       @Override
+       public void onCreate(Bundle savedInstanceState) {
+               super.onCreate(savedInstanceState);
+               MyApplication.getInstance().addActivity(this);
+               setContentView(R.layout.test_brightness);
+               //dou 
+               mHandler = new Handler() {
+                       @Override
+                       public void handleMessage(Message msg) {
+                               // TODO Auto-generated method stub
+                               switch (msg.what) {
+                               case MSGID_LCD_RED:
+                                       Toast.makeText(getApplicationContext(), BrightnessTest.this.getResources().getString(R.string.testing_backlight), Toast.LENGTH_SHORT).show();
+                                       setBrightness(20);
+                                       break;
+                               case MSGID_LCD_GREEN:
+                                       setBrightness(20);
+                                       break;
+                               case MSGID_LCD_BLUE:
+                                       setBrightness(20);
+                                       break;
+                               case MSGID_LCD_YELLOW://黑
+                                       setBrightness(100);
+                                       break;
+                               case MSGID_LCD_WHITE:
+                                       setBrightness(20);
+                                       break;
+                               case MSGID_LCD_OK:
+                                       setBrightness(220);
+                                       break;
+                               default:
+                                       break;
+                               }
+                       }
+               };
+               //end
+               
+               
+               
+               textView = (TextView) findViewById(R.id.MyBrightness);
+               // btn_success = (Button) findViewById(R.id.btn_success);
+               // btn_success.setOnClickListener(this);
+               // btn_fail = (Button) findViewById(R.id.btn_fail);
+               // btn_fail.setOnClickListener(this);
+               //
+               // ct.initButton(btn_success);
+               bAutoAdjust = isAutoBrightness();
+               mseekBar = (SeekBar) findViewById(R.id.BrightnessSeekBar);
+               Intent intent = getIntent();
+               running = false;
+               if (intent != null) {
+                       running = intent.getBooleanExtra("running", false);
+               }
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);
+               buttonView.btn_left.setOnClickListener(this);
+               buttonView.btn_right.setOnClickListener(this);
+               buttonView.btn_left.setClickable(false);
+
+               Log.v("fengxuanyyang", "seekBar=" + mseekBar);
+               int iCurrentBrightness = (int) (android.provider.Settings.System.getInt(getContentResolver(),
+                               android.provider.Settings.System.SCREEN_BRIGHTNESS, 255));
+               mseekBar.setProgress(iCurrentBrightness);
+               mseekBar.setOnSeekBarChangeListener(this);
+               mCurrentBrightness = getBrightness();
+               // String
+               String current_brightness = getResources().getString(R.string.fmTest);
+               current_brightness += iCurrentBrightness;
+               textView.setText(current_brightness);
+               if (bAutoAdjust)
+                       stopAutoBrightness();
+
+       }
+       
+       @Override
+       protected void onStart() {
+               // TODO Auto-generated method stub
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_RED, 1000);
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_GREEN, 2000);
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_BLUE, 3000);
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_YELLOW, 4000);
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_WHITE, 5000);
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_OK, 6000);
+               super.onStart();
+       }
+
+       @Override
+       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+               if (fromUser) {
+                       Integer tmpInt = seekBar.getProgress();
+                       setBrightness(tmpInt);
+                       Log.v("fengxuanyang", "tmpInt=" + tmpInt);
+
+               } // mCurrentBrightness=getScreenBrightness(this);
+               mCurrentBrightness = getBrightness();
+
+               String current_brightness = getResources().getString(R.string.fmTest);
+               // current_brightness += mCurrentBrightness;
+               current_brightness += progress;
+               textView.setText(current_brightness);
+               judgePass(mCurrentBrightness);
+
+       }
+
+       protected void onStop() {
+               super.onStop();
+               if (bAutoAdjust)
+                       startAutoBrightness();
+       }
+
+       private void setBrightness(int brightness) {
+               int temp = brightness;
+
+               if (temp < 1)
+                       temp = 1;
+               else if (temp > 255)
+                       temp = 255;
+
+               win = getWindow();
+               lp = win.getAttributes();
+               lp.screenBrightness = Float.valueOf(temp/* brightness */) * (1f / 255f);
+               win.setAttributes(lp);
+       }
+
+       private int getScreenBrightness(Activity activity) {
+               int nowBrightnessValue = 0;
+               ContentResolver resolver = activity.getContentResolver();
+               try {
+                       nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+               return nowBrightnessValue;
+       }
+
+       private String getBrightness() {
+               // / while(int i =3) {
+               byte[] buffer = new byte[4];
+               String result = android.provider.Settings.System.getInt(getContentResolver(),
+                               android.provider.Settings.System.SCREEN_BRIGHTNESS, 255) + "";
+               // String str ;
+               String BRIGHTNESS_FILE = "/sys/class/leds/lcd-backlight/brightness";
+               FileInputStream fis;
+               try {
+                       fis = new FileInputStream(BRIGHTNESS_FILE);
+                       fis.read(buffer);
+                       result = new String(buffer);
+                       Log.v("fengxuanyang", result);
+                       fis.close();
+                       // Log.v("fengxuanyang", "result="+result);
+               } catch (Exception e) {
+                       Log.v("fengxuanyang", "read  BRIGHTNESS_FILE  error");
+                       e.printStackTrace();
+               }
+               return result;
+
+       }
+
+       private void startAutoBrightness() {
+               Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE,
+                               Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+       }
+
+       private void stopAutoBrightness() {
+               Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE,
+                               Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+       }
+
+       private boolean isAutoBrightness() {
+               boolean automicBrightness = false;
+               try {
+                       automicBrightness = Settings.System.getInt(getContentResolver(),
+                                       Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+               } catch (SettingNotFoundException e) {
+                       e.printStackTrace();
+               }
+               return automicBrightness;
+       }
+
+       String mCurrentBrightness1;
+       String mCurrentBrightness2;
+       int i;
+
+       private void judgePass(String mCurrentBrightness) {
+               mCurrentBrightness1 = mCurrentBrightness;
+               Log.v("fengxuanyang", mCurrentBrightness1 + "----" + mCurrentBrightness2);
+               if (i == 1) {
+                       mCurrentBrightness2 = mCurrentBrightness;
+                       if (mCurrentBrightness2.equals(mCurrentBrightness2)) {
+                               Log.v("fengxuanyang", mCurrentBrightness1 + "----" + mCurrentBrightness2);
+                               // btn_success.setEnabled(true);
+                       }
+               }
+               i++;
+               Log.v("fengxuanyang", mCurrentBrightness);
+
+       }
+
+       @Override
+       public void onStartTrackingTouch(SeekBar seekBar) {
+               // TODO Auto-generated method stub
+
+       }
+
+       @Override
+       public void onStopTrackingTouch(SeekBar seekBar) {
+               // TODO Auto-generated method stub
+
+       }
+
+       // OnSeekBarChangeListener seekListener = new OnSeekBarChangeListener() {
+       //
+       // public void onProgressChanged(SeekBar seekBar, int progress,
+       // boolean fromUser) {
+       // if (fromUser) {
+       // Integer tmpInt = seekBar.getProgress();
+       // System.out.println(tmpInt);
+       // // 51 (seek scale) * 5 = 255 (max brightness)
+       // // Old way
+       // android.provider.Settings.System.putInt(getContentResolver(),
+       // android.provider.Settings.System.SCREEN_BRIGHTNESS,
+       // tmpInt); // 0-255
+       // tmpInt = Settings.System.getInt(getContentResolver(),
+       // Settings.System.SCREEN_BRIGHTNESS, -1);
+       // // Cupcake way..... sucks
+       // WindowManager.LayoutParams lp = getWindow().getAttributes();
+       // // lp.screenBrightness = 1.0f;
+       // // Float tmpFloat = (float)tmpInt / 255;
+       // if (0<= tmpInt && tmpInt <= 255) {
+       // lp.screenBrightness = tmpInt;
+       // }
+       //
+       //
+       // getWindow().setAttributes(lp);
+       // }
+       //
+       // }
+       //
+       // @Override
+       // public void onStartTrackingTouch(SeekBar seekBar) {
+       // // TODO Auto-generated method stub
+       // // put awesomeness here
+       // }
+       //
+       // @Override
+       // public void onStopTrackingTouch(SeekBar seekBar) {
+       // // TODO Auto-generated method stub
+       // // and here too
+       // }
+       // };
+       
+       @Override
+       public void onClick(View arg0) {
+               Intent intent = new Intent(this, GravitySensorActivity.class);
+               intent.putExtra("running", true);
+               Intent intent1 = new Intent(this, TestMainActivity.class);
+               // TestResult testResult = (TestResult) getApplicationContext();
+               switch (arg0.getId()) {
+
+               case R.id.btn_two_left:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("light", "true")
+                                       .commit();
+                       finish();
+                       break;
+               case R.id.btn_two_right:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("light", "false")
+                                       .commit();
+                       finish();
+                       break;
+               }
+       }
+
+       @Override
+       protected void onResume() {
+               buttonView.setSuccessColor();
+               buttonView.btn_left.setClickable(true);
+               super.onResume();
+       }
+
+       
+       @Override
+       public void onBackPressed() {
+               // super.onBackPressed();
+               if (running) {
+                       Intent intent = new Intent(this, TestMainList.class);
+                       startActivity(intent);
+                       finish();
+               } else {
+                       finish();
+               }
+       }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/CameraPreview.java b/app/src/main/java/mobile/miki/CameraPreview.java
new file mode 100644 (file)
index 0000000..0a245d7
--- /dev/null
@@ -0,0 +1,584 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.annotation.SuppressLint;\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.graphics.Color;\r
+import android.hardware.Camera;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+import android.os.PowerManager.WakeLock;\r
+import android.preference.PreferenceManager;\r
+import android.util.DisplayMetrics;\r
+import android.util.Log;\r
+import android.view.Surface;\r
+import android.view.SurfaceHolder;\r
+import android.view.SurfaceView;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.view.WindowManager;\r
+import android.widget.Button;\r
+import android.widget.Toast;\r
+\r
+import java.io.IOException;\r
+import java.util.List;\r
+\r
+import mobile.miki.ageingmode.AgeingModeActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class CameraPreview extends BaseActivity implements SurfaceHolder.Callback, OnClickListener {\r
+    private static final String TAG = "AgeingCameraPreview";\r
+    private Camera camera = null;\r
+    Handler handler;\r
+       Button bt;\r
+    private SurfaceHolder holder;\r
+    private boolean isAutoFocus;\r
+    private float mAspectRatio;\r
+    private int mH;\r
+    private int mHorizontalTileSize;\r
+    private int mPrvH;\r
+    private int mPrvW;\r
+    private int mVerticalTileSize;\r
+    private int mW;\r
+    private CameraSurfaceView preview;\r
+    private int TIME = 1000 * 10;\r
+    private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       public static CameraPreview instance = null;\r
+       public SurfaceView surfaceView;\r
+    private DisplayMetrics mDisplayMetrics;\r
+    private static final int FRONT = 1;//前置摄像头标记\r
+    private static final int BACK = 2;//后置摄像头标记\r
+    private int currentCameraType = 2;//当前打开的摄像头标记\r
+    private Button change_camera;\r
+\r
+    public CameraPreview() {\r
+        mHorizontalTileSize = 16;\r
+        mVerticalTileSize = 16;\r
+        mAspectRatio = 1.0f;\r
+        //设置camera宽,高\r
+        mPrvH = 360;\r
+        mPrvW = 360;\r
+        isAutoFocus = true;\r
+        handler = new Handler( ) {\r
+\r
+            public void handleMessage(Message msg) {\r
+                if(camera != null) {\r
+                    camera.autoFocus(null);\r
+                }\r
+            }\r
+        };\r
+    }\r
+\r
+//    static {\r
+//        System.loadLibrary("ftmjni");\r
+//    }\r
+    private ButtonViewTwo buttonView;\r
+       boolean running;\r
+    boolean pcbatest;\r
+       boolean isEgeingMode = false;\r
+       private PowerManager powerManager = null;\r
+       private WakeLock wakeLock = null;\r
+\r
+    public void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        requestWindowFeature(0x1);\r
+        setContentView(R.layout.camera_preview_layout);\r
+        instance = this;\r
+               bt = (Button)findViewById(R.id.isZoom);\r
+        Log.i("AgeingCameraPreview", "platform:" + getString(R.string.project));\r
+\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+        change_camera = (Button) findViewById(R.id.change_camera);\r
+        change_camera.setOnClickListener(this);\r
+        // s09双摄切换\r
+        if (!FTUtils.isS06()) {\r
+            change_camera.setVisibility(View.GONE);\r
+        }\r
+\r
+               init();\r
+               ageingMode();\r
+    }\r
+\r
+\r
+    private void init() {\r
+\r
+        //preview = (CameraSurfaceView)findViewById(R.id.camera_preview);\r
+        surfaceView = (SurfaceView) findViewById(R.id.camera_preview);\r
+        //preview.setAspectRatio(mPrvW, mPrvH);\r
+        holder = surfaceView.getHolder();\r
+        holder.addCallback(this);\r
+        holder.setType(0x3);\r
+\r
+        buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+\r
+               getCameraIntent();\r
+               if(isEgeingMode) {\r
+                       powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);\r
+                       wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock");\r
+                       if(wakeLock != null) {\r
+                               //是否需计算锁的数量\r
+                               wakeLock.setReferenceCounted(false);\r
+                               //请求屏幕常亮,onResume()方法中执行\r
+                               wakeLock.acquire();\r
+                       }\r
+\r
+               }\r
+\r
+    }\r
+\r
+    protected Camera.Size getBestPreSize(int surfaceWidth, int surfaceHeight, List<Camera.Size> preSizeList) {\r
+\r
+        int ReqTmpWidth;\r
+        int ReqTmpHeight;\r
+        // 当屏幕为垂直的时候需要把宽高值进行调换,保证宽大于高\r
+        boolean mIsPortrait=false;\r
+        if (mIsPortrait) {\r
+            ReqTmpWidth = surfaceHeight;\r
+            ReqTmpHeight = surfaceWidth;\r
+        } else {\r
+            ReqTmpWidth = surfaceWidth;\r
+            ReqTmpHeight = surfaceHeight;\r
+        }\r
+        //先查找preview中是否存在与surfaceview相同宽高的尺寸\r
+        for(Camera.Size size : preSizeList){\r
+            if((size.width == ReqTmpWidth) && (size.height == ReqTmpHeight)){\r
+                return size;\r
+            }\r
+        }\r
+\r
+        // 得到与传入的宽高比最接近的size\r
+        float reqRatio = ((float) ReqTmpWidth) / ReqTmpHeight;\r
+        float curRatio, deltaRatio;\r
+        float deltaRatioMin = Float.MAX_VALUE;\r
+        Camera.Size retSize = null;\r
+        for (Camera.Size size : preSizeList) {\r
+            curRatio = ((float) size.width) / size.height;\r
+            deltaRatio = Math.abs(reqRatio - curRatio);\r
+            if (deltaRatio < deltaRatioMin) {\r
+                deltaRatioMin = deltaRatio;\r
+                retSize = size;\r
+            }\r
+        }\r
+        return retSize;\r
+    }\r
+\r
+    @Override\r
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+        super.onActivityResult(requestCode, resultCode, data);\r
+    }\r
+\r
+    /**\r
+     * 处理老化模式的状态\r
+     */\r
+    private void ageingMode() {\r
+       if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+               // 单项无限循环\r
+               if (WORK_TIME == -1) {\r
+                       WORK_TIME = 100000000;\r
+               }\r
+                        TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+                ageHandler.postDelayed(runnable, TIME);\r
+               sendBraodCaseReceiver();\r
+           } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+               TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+               ageHandler.postDelayed(runnable, TIME);\r
+               registerReceiver();\r
+        } else {\r
+               sendBraodCaseReceiver();\r
+        }\r
+    }\r
+\r
+    private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+        intent.setAction("com.android.stopTiming");\r
+        sendBroadcast(intent);\r
+    }\r
+\r
+    private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopActivity");\r
+               CameraPreview.this.registerReceiver(receiver, filter);\r
+       }\r
+\r
+    private void getCameraIntent() {\r
+       Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+\r
+               }\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+    }\r
+\r
+    protected void onResume() {\r
+        super.onResume();\r
+\r
+\r
+    }\r
+\r
+\r
+\r
+    @Override\r
+    protected void onPause() {\r
+       super.onPause();\r
+\r
+\r
+    }\r
+\r
+    private int roundUpToTile(int dimension, int tileSize, int maxDimension) {\r
+        return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension);\r
+    }\r
+\r
+    protected void onDestroy() {\r
+       if(camera != null) {\r
+               camera.release();\r
+            camera = null;\r
+       }\r
+\r
+       if(wakeLock != null) {\r
+               //取消屏幕常亮,onPause()方法中执行\r
+               wakeLock.release();\r
+               wakeLock = null;\r
+       }\r
+\r
+        isAutoFocus = false;\r
+        stopLoop(null);\r
+\r
+        if(ageHandler != null && runnable != null) {\r
+               ageHandler.removeCallbacks(runnable);\r
+        }\r
+        if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+\r
+        if(handler != null) {\r
+               handler.removeCallbacksAndMessages(handler.obtainMessage());\r
+        }\r
+\r
+        super.onDestroy();\r
+    }\r
+\r
+    public void pullClose(View view) {\r
+        if(camera.getParameters().isZoomSupported()) {\r
+            camera.getParameters().setZoom(0x0);\r
+        }\r
+    }\r
+\r
+    public void pullFar(View view) {\r
+        if(camera.getParameters().isZoomSupported()) {\r
+            camera.getParameters().setZoom(camera.getParameters().getMaxZoom());\r
+        }\r
+    }\r
+\r
+    public void pullLoop(View view) {\r
+        isAutoFocus = true;\r
+        new CameraPreview.AutoFocus( ).start();\r
+               if(camera.getParameters().isZoomSupported()) {\r
+        bt.setText(getString(R.string.isZoom_y));\r
+        bt.setTextColor(Color.GREEN);\r
+        bt.setBackgroundColor(0xFFDEAD);\r
+               bt.setVisibility(View.VISIBLE);\r
+               }else{\r
+        bt.setText(getString(R.string.isZoom_n));\r
+        bt.setBackgroundColor(0xFFDEAD);\r
+        bt.setTextColor(Color.RED);\r
+               bt.setVisibility(View.VISIBLE);\r
+               }\r
+\r
+    }\r
+\r
+    public void stopLoop(View view) {\r
+        isAutoFocus = false;\r
+    }\r
+\r
+    class AutoFocus extends Thread {\r
+\r
+        public void run() {\r
+            while(isAutoFocus) {\r
+                Log.i("AgeingCameraPreview", "autoFocus");\r
+                try {\r
+                    handler.sendMessage(handler.obtainMessage());\r
+                    sleep(0xbb8);\r
+                    continue;\r
+                } catch(InterruptedException e) {\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    public void surfaceCreated(SurfaceHolder holder) {\r
+        Log.e("zhangdi","surfaceCreated");\r
+        try {\r
+               ///参数0为主摄像头。不加参数camera可能会为空\r
+//            try {\r
+//                camera = Camera.open(0);\r
+//            } catch (Exception e) {\r
+//                Toast.makeText(CameraPreview.this, "resume_cameraError", Toast.LENGTH_LONG).show();\r
+//            }\r
+               camera = Camera.open(0);\r
+               if(camera != null) {\r
+                Camera.Parameters parameters = camera.getParameters();\r
+                parameters.setPictureFormat(0x100);\r
+                parameters.setFlashMode("on");\r
+                List<Camera.Size> sizes = camera.getParameters().getSupportedPreviewSizes();\r
+                mDisplayMetrics=getResources().getDisplayMetrics();\r
+                Camera.Size bestsize=getBestPreSize(mDisplayMetrics.widthPixels,mDisplayMetrics.heightPixels,sizes);\r
+                parameters.setPreviewSize(bestsize.width,bestsize.height);\r
+                //parameters.setPictureSize(640,480);\r
+                camera.setPreviewDisplay(holder);\r
+                setCameraDirection();\r
+                camera.setParameters(parameters);\r
+                camera.startPreview();\r
+               }\r
+\r
+        } catch(Exception exception) {\r
+               exception.printStackTrace();\r
+               String model = Build.MODEL;\r
+               if(!model.equals("F6")){ //传奇报错\r
+               Toast.makeText(CameraPreview.this, "cameraError", Toast.LENGTH_LONG).show();\r
+                       if(camera != null) {\r
+                               camera.release();\r
+                       camera = null;\r
+                       }\r
+               }\r
+        }\r
+    }\r
+\r
+    public void surfaceDestroyed(SurfaceHolder holder) {\r
+        Log.e("zhangdi","surfaceDestroyed");\r
+        if(camera != null) {\r
+            camera.stopPreview();\r
+            camera.setPreviewCallback(null);\r
+            camera.release();\r
+            camera = null;\r
+        }\r
+    }\r
+\r
+\r
+    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {\r
+        try {\r
+            this.holder = holder;\r
+            Log.e("zhangdi","surfaceChanged");\r
+            /*Camera.Parameters parameters = camera.getParameters();\r
+            parameters.setPictureFormat(0x100);\r
+            parameters.setFlashMode("on");\r
+            List<Camera.Size> sizes = camera.getParameters().getSupportedPreviewSizes();\r
+            mDisplayMetrics=getResources().getDisplayMetrics();\r
+            Camera.Size bestsize=getBestPreSize(mDisplayMetrics.widthPixels,mDisplayMetrics.heightPixels,sizes);\r
+            parameters.setPreviewSize(bestsize.width,bestsize.height);\r
+            parameters.setPictureSize(bestsize.width,bestsize.height);\r
+            Log.e("zhangdi","w:"+w+",h:"+h+",bestsize.width:"+bestsize.width+",bestsize.height:"+bestsize.height);\r
+//            parameters.setPreviewSize(w, h);\r
+            camera.setParameters(parameters);*/\r
+\r
+//            camera.startPreview();\r
+//            return;\r
+        } catch(Exception localException1) {\r
+        }\r
+    }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, WifiTestActiviy.class);\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       //如果当前是老化模式\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "true")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "true")\r
+                                               .commit();\r
+                       }\r
+               if(camera != null) {\r
+                       camera.release();\r
+                camera = null;\r
+               }\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "false")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "false")\r
+                                               .commit();\r
+                       }\r
+               if(camera != null) {\r
+                       camera.release();\r
+                camera = null;\r
+               }\r
+                       finish();\r
+                       break;\r
+            case R.id.change_camera:\r
+                try {\r
+                    changeCamera();\r
+                } catch (IOException e) {\r
+                    e.printStackTrace();\r
+                }\r
+                break;\r
+               }\r
+\r
+       }\r
+\r
+       Handler ageHandler = new Handler();\r
+       Runnable runnable = new Runnable() {\r
+\r
+        @Override\r
+        public void run() {\r
+            // handler自带方法实现定时器  \r
+            try {\r
+//                handler.postDelayed(this, TIME);  \r
+                System.out.println("do...");\r
+                if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       Intent ageingIntent = new Intent(CameraPreview.this,MikeTest.class);\r
+                    ageingIntent.putExtra("ageing_mode", true);\r
+                    ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                    ageingIntent.putExtra("work_time", WORK_TIME);\r
+                    ageingIntent.putExtra("first_start_service", false);\r
+                               startActivity(ageingIntent);\r
+                }\r
+            } catch (Exception e) {\r
+                e.printStackTrace();\r
+                System.out.println("exception...");\r
+            }\r
+        }\r
+    };\r
+\r
+    /**\r
+        * 获取广播数据\r
+        *\r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       CameraPreview.this.finish();\r
+               }\r
+       }\r
+\r
+    private void setCameraDirection() {\r
+        android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();\r
+        android.hardware.Camera.getCameraInfo(0, info);\r
+        WindowManager mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);\r
+        int rotation = mWindowManager.getDefaultDisplay().getRotation();\r
+        int degrees = 0;\r
+        switch (rotation) {\r
+            case Surface.ROTATION_0:\r
+                degrees = 0;\r
+                break;\r
+            case Surface.ROTATION_90:\r
+                degrees = 90;\r
+                break;\r
+            case Surface.ROTATION_180:\r
+                degrees = 180;\r
+                break;\r
+            case Surface.ROTATION_270:\r
+                degrees = 270;\r
+                break;\r
+        }\r
+\r
+        int result;\r
+        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {\r
+            result = (info.orientation + degrees) % 360;\r
+            result = (360 - result) % 360; // compensate the mirror\r
+        } else { // back-facing\r
+            result = (info.orientation - degrees + 360) % 360;\r
+        }\r
+        Log.i("dxc", "result " + result);\r
+        camera.setDisplayOrientation(result);\r
+    }\r
+\r
+    @SuppressLint("NewApi")\r
+    private Camera openCamera(int type){\r
+        int frontIndex =-1;\r
+        int backIndex = -1;\r
+        int cameraCount = Camera.getNumberOfCameras();\r
+        Camera.CameraInfo info = new Camera.CameraInfo();\r
+        for(int cameraIndex = 0; cameraIndex<cameraCount; cameraIndex++){\r
+            Camera.getCameraInfo(cameraIndex, info);\r
+            if(info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){\r
+                frontIndex = cameraIndex;\r
+            }else if(info.facing == Camera.CameraInfo.CAMERA_FACING_BACK){\r
+                backIndex = cameraIndex;\r
+            }\r
+        }\r
+\r
+        currentCameraType = type;\r
+        if(type == FRONT && frontIndex != -1){\r
+            return Camera.open(frontIndex);\r
+        }else if(type == BACK && backIndex != -1){\r
+            return Camera.open(backIndex);\r
+        }\r
+        return null;\r
+    }\r
+    private void changeCamera() throws IOException {\r
+\r
+        camera.stopPreview();\r
+        camera.release();\r
+        if(currentCameraType == FRONT){\r
+            Toast.makeText(this,"change to back camera", Toast.LENGTH_LONG).show();\r
+            camera = openCamera(BACK);\r
+        }else if(currentCameraType == BACK){\r
+            Toast.makeText(this,"change to front camera", Toast.LENGTH_LONG).show();\r
+            camera = openCamera(FRONT);\r
+        }\r
+        camera.setPreviewDisplay(surfaceView.getHolder());\r
+        setCameraDirection();\r
+        camera.startPreview();\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/CameraSurfaceView.java b/app/src/main/java/mobile/miki/CameraSurfaceView.java
new file mode 100644 (file)
index 0000000..5daa44e
--- /dev/null
@@ -0,0 +1,65 @@
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.util.AttributeSet;\r
+import android.view.SurfaceView;\r
+import android.view.View;\r
+\r
+public class CameraSurfaceView extends SurfaceView {\r
+    private int mH;\r
+    private int mW;\r
+    private int mHorizontalTileSize = 0x10;\r
+    private int mVerticalTileSize = 0x10;\r
+    private float mAspectRatio = 0.0f;\r
+    \r
+    public CameraSurfaceView(Context context, AttributeSet attrs) {\r
+        super(context, attrs);\r
+    }\r
+    \r
+    public CameraSurfaceView(Context context) {\r
+        super(context);\r
+    }\r
+    \r
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\r
+        int widthSpecSize = View.MeasureSpec.getSize(widthMeasureSpec);\r
+        int heightSpecSize = View.MeasureSpec.getSize(heightMeasureSpec);\r
+        int width = widthSpecSize;\r
+        int height = heightSpecSize;\r
+        if((width > 0) && (height > 0)) {\r
+            if(mW > width) {\r
+                float defaultRatio = (float)width / (float)height;\r
+                if(defaultRatio < mAspectRatio) {\r
+                    height = (int)((float)width / mAspectRatio);\r
+                } else if(defaultRatio > mAspectRatio) {\r
+                    width = (int)((float)height * mAspectRatio);\r
+                }\r
+                width = roundUpToTile(width, mHorizontalTileSize, widthSpecSize);\r
+                height = roundUpToTile(height, mVerticalTileSize, heightSpecSize);\r
+            } else {\r
+                  width = mW;\r
+                  height = mH;\r
+            }\r
+            mW = width;\r
+            mH = height;\r
+            setMeasuredDimension(width, height);\r
+            return;\r
+        }\r
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);\r
+    }\r
+    \r
+    private int roundUpToTile(int dimension, int tileSize, int maxDimension) {\r
+        return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension);\r
+    }\r
+    \r
+    public void setAspectRatio(int width, int height) {\r
+        mW = width;\r
+        mH = height;\r
+        setAspectRatio(((float)width / (float)height));\r
+    }\r
+    \r
+    public void setAspectRatio(float aspectRatio) {\r
+        mAspectRatio = aspectRatio;\r
+        requestLayout();\r
+        invalidate();\r
+    }\r
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/CompassSurfaceView.java b/app/src/main/java/mobile/miki/CompassSurfaceView.java
new file mode 100644 (file)
index 0000000..d2b5f4b
--- /dev/null
@@ -0,0 +1,240 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.graphics.Canvas;\r
+import android.graphics.Paint;\r
+import android.graphics.Shader;\r
+import android.graphics.Typeface;\r
+import android.graphics.drawable.BitmapDrawable;\r
+import android.graphics.drawable.Drawable;\r
+import android.os.Build;\r
+import android.provider.Settings;\r
+import android.telephony.TelephonyManager;\r
+import android.util.AttributeSet;\r
+import android.util.Log;\r
+import android.view.SurfaceHolder;\r
+import android.view.SurfaceView;\r
+\r
+class CompassSurfaceView extends SurfaceView implements SurfaceHolder.Callback {\r
+    private PictureRender curCompassRender;\r
+    private static String deviceId;\r
+    private float direction;\r
+    private String[] directionLabels;\r
+    //public static final unknown_type[] directionRanges;\r
+    public static final int[][] directionRanges ;\r
+    private Paint mPaint;\r
+    private float realDirection;\r
+    float mScale = 0.0f;\r
+    int midX = 160;\r
+    int midY = 160;\r
+    boolean ready = false;\r
+    private int textColor = -1;\r
+    \r
+    static {\r
+       int[][] arrayOfInt = new int[8][];\r
+        int[] arrayOfInt1 = new int[0x2];\r
+        arrayOfInt1[0x0] = -0x16;\r
+        arrayOfInt1[0x1] = 0x16;\r
+        arrayOfInt[0x0] = arrayOfInt1;\r
+        int[] arrayOfInt2 = new int[0x2];\r
+        arrayOfInt2[0x0] = 0x17;\r
+        arrayOfInt2[0x1] = 0x43;\r
+        arrayOfInt[0x1] = arrayOfInt2;\r
+        int[] arrayOfInt3 = new int[0x2];\r
+        arrayOfInt3[0x0] = 0x44;\r
+        arrayOfInt3[0x1] = 0x70;\r
+        arrayOfInt[0x2] = arrayOfInt3;\r
+        int[] arrayOfInt4 = new int[0x2];\r
+        arrayOfInt4[0x0] = 0x71;\r
+        arrayOfInt4[0x1] = 0x9d;\r
+        arrayOfInt[0x3] = arrayOfInt4;\r
+        int[] arrayOfInt5 = new int[0x2];\r
+        arrayOfInt5[0x0] = -0x43;\r
+        arrayOfInt5[0x1] = -0x17;\r
+        arrayOfInt[0x4] = arrayOfInt5;\r
+        int[] arrayOfInt6 = new int[0x2];\r
+        arrayOfInt6[0x0] = -0x70;\r
+        arrayOfInt6[0x1] = -0x44;\r
+        arrayOfInt[0x5] = arrayOfInt6;\r
+        int[] arrayOfInt7 = new int[0x2];\r
+        arrayOfInt7[0x0] = -0x9d;\r
+        arrayOfInt7[0x1] = -0x71;\r
+        arrayOfInt[0x6] = arrayOfInt7;\r
+        int[] arrayOfInt8 = new int[0x2];\r
+        arrayOfInt8[0x0] = -0x9d;\r
+        arrayOfInt8[0x1] = 0x9d;\r
+        arrayOfInt[0x7] = arrayOfInt8;\r
+        directionRanges = arrayOfInt;\r
+    }\r
+    \r
+    public CompassSurfaceView(Context paramContext) {\r
+        super(paramContext);\r
+        init(paramContext);\r
+    }\r
+    \r
+    public CompassSurfaceView(Context paramContext, AttributeSet paramAttributeSet) {\r
+        super(paramContext, paramAttributeSet);\r
+        init(paramContext);\r
+    }\r
+    \r
+    private void drawBackground(Canvas paramCanvas) {\r
+       // getResources() = bg;\r
+        //(BitmapDrawable)getResources().setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);\r
+        //bg.setBounds(0x0, 0x0, (midX * 0x2), (midY * 0x2));\r
+        //bg.draw(paramCanvas);\r
+        \r
+        Drawable localDrawable = getResources().getDrawable(2130837510);\r
+        ((BitmapDrawable)localDrawable).setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);\r
+        localDrawable.setBounds(0, 0, 2 * this.midX, 2 * this.midY);\r
+        localDrawable.draw(paramCanvas);\r
+        \r
+    }\r
+    \r
+    private void drawCompass(Canvas paramCanvas, float paramFloat) {\r
+        if(curCompassRender == null) {\r
+            updateCompassRender();\r
+        }\r
+        if(curCompassRender == null) {\r
+            return;\r
+        }\r
+        curCompassRender.draw(paramCanvas, paramFloat, midX, midY);\r
+    }\r
+    \r
+    public String getDirectionLabel(float direction) {\r
+/*        int paramInt = (int)direction;\r
+        for(int i = 0x0; i < directionRanges.length; i = i + 0x1) {\r
+            arrayOfInt = directionRanges[i];\r
+            if((i != (directionRanges.length - 0x1)) || (paramInt < arrayOfInt[0]) && (paramInt > arrayOfInt[0x1])) {\r
+                continue;\r
+            }\r
+            sb.append(directionLabels[i]);\r
+            break;\r
+        }\r
+        if(direction < 0x0) {\r
+            direction += 360.0f;\r
+        }\r
+        i = (int)direction;\r
+        sb.append(" ");\r
+        sb.append(i);\r
+        sb.append("\u00b0");\r
+        return sb.toString();*/\r
+        \r
+        \r
+        \r
+        StringBuilder localStringBuilder = new StringBuilder();\r
+        int i = (int)direction;\r
+        for (int j = 0; ; j++)\r
+          if (j < directionRanges.length)\r
+          {\r
+            int[] arrayOfInt = directionRanges[j];\r
+            if ((j == -1 + directionRanges.length) || ((i >= arrayOfInt[0]) && (i <= arrayOfInt[1])))\r
+              localStringBuilder.append(this.directionLabels[j]);\r
+          }\r
+          else\r
+          {\r
+            if (direction < 0.0F)\r
+               direction += 360.0F;\r
+            int k = (int)direction;\r
+            localStringBuilder.append(" ");\r
+            localStringBuilder.append(k);\r
+            localStringBuilder.append("\u00b0");\r
+            return localStringBuilder.toString();\r
+          }\r
+        \r
+        \r
+    }\r
+    \r
+    public static String getDeviceId(Context paramContext) {\r
+       if(!(deviceId != null) && (!"".equals(deviceId))) {\r
+          \r
+           if(paramContext.checkCallingOrSelfPermission("android.permission.READ_PHONE_STATE") == 0) {\r
+               deviceId = ((TelephonyManager)paramContext.getSystemService("phone")).getDeviceId();\r
+           }\r
+           if((deviceId == null) || ("".equals(deviceId))) {\r
+               deviceId = Settings.System.getString(paramContext.getContentResolver(), "android_id");\r
+           }\r
+\r
+            return deviceId;\r
+        } else if((deviceId == null) || ("".equals(deviceId))) {\r
+            deviceId = "android_id";\r
+        }\r
+        return deviceId;\r
+        \r
+    }\r
+    \r
+    private void init(Context paramContext) {\r
+        mScale = getContext().getResources().getDisplayMetrics().density;\r
+        getHolder().addCallback(this);\r
+        mPaint = new Paint();\r
+        mPaint.setAntiAlias(true);\r
+        mPaint.setARGB(0xff, 0x0, 0x0, 0x0);\r
+        mPaint.setStrokeWidth(8.0f);\r
+        mPaint.setColor(textColor);\r
+        mPaint.setTypeface(Typeface.SANS_SERIF);\r
+        mPaint.setTextSize((28.0f * mScale));\r
+        mPaint.setTextAlign(Paint.Align.CENTER);\r
+        directionLabels = paramContext.getResources().getStringArray(R.array.directionLabels);\r
+        updateCompassRender();\r
+    }\r
+    \r
+    private void updateCompassRender() {\r
+        try\r
+        {\r
+          int i = Math.min(2 * this.midX, 2 * this.midY);\r
+          if (i >= 200)\r
+          {\r
+            this.mPaint.setColor(this.textColor);\r
+            this.curCompassRender = new PictureRender(getContext(), i, R.drawable.ic_compass, R.drawable.ic_needle, 0);\r
+          }\r
+        } catch (Exception localException){\r
+               localException.printStackTrace();\r
+        } finally {\r
+               \r
+        }\r
+    }\r
+    \r
+    protected void onDraw(Canvas paramCanvas) {\r
+        if(!ready) {\r
+            return;\r
+        }\r
+        drawBackground(paramCanvas);\r
+        drawCompass(paramCanvas, direction);\r
+    }\r
+    \r
+    protected boolean onDrawnCheck(Canvas paramCanvas) {\r
+        if(ready) {\r
+            onDraw(paramCanvas);\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+    \r
+    protected void onSizeChanged(int paramInt1, int paramInt2, int paramInt3, int paramInt4) {\r
+        super.onSizeChanged(paramInt1, paramInt2, paramInt3, paramInt4);\r
+        Log.e("LTCompass", "w=" + paramInt1 + ",h=" + paramInt2 + ",model:" + Build.MODEL + "," + Build.VERSION.RELEASE + ", " + Build.ID + ", " + getDeviceId(getContext()));\r
+        midX = (paramInt1 / 0x2);\r
+        midY = (paramInt2 / 0x2);\r
+        updateCompassRender();\r
+    }\r
+    \r
+    public void setDirection(float paramFloat1, float paramFloat2) {\r
+        realDirection = paramFloat1;\r
+        direction = paramFloat2;\r
+    }\r
+    \r
+    public void surfaceChanged(SurfaceHolder paramSurfaceHolder, int paramInt1, int paramInt2, int paramInt3) {\r
+    }\r
+    \r
+    public void surfaceCreated(SurfaceHolder paramSurfaceHolder) {\r
+        ready = true;\r
+    }\r
+    \r
+    public void surfaceDestroyed(SurfaceHolder paramSurfaceHolder) {\r
+        ready = false;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/Constants.java b/app/src/main/java/mobile/miki/Constants.java
new file mode 100644 (file)
index 0000000..9c50561
--- /dev/null
@@ -0,0 +1,8 @@
+package mobile.miki;\r
+\r
+public class Constants {\r
+\r
+    public static final int SINGLEITEM_TIMES = 1000 * 60 * 60;\r
+    public static final int CYCLE_ONE_ACTIVITY_TIMES = 1000 * 60;\r
+    public static final int AGING_MODE_SETRESULT = 1002;\r
+}\r
diff --git a/app/src/main/java/mobile/miki/DSPActivity.java b/app/src/main/java/mobile/miki/DSPActivity.java
new file mode 100644 (file)
index 0000000..0a346f9
--- /dev/null
@@ -0,0 +1,374 @@
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.media.AudioFormat;\r
+import android.media.AudioManager;\r
+import android.media.AudioTrack;\r
+import android.media.MediaPlayer;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.Button;\r
+import android.widget.Toast;\r
+\r
+import java.io.BufferedInputStream;\r
+import java.io.ByteArrayInputStream;\r
+import java.io.DataInputStream;\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileOutputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.OutputStream;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+\r
+public class DSPActivity extends BaseActivity implements View.OnClickListener {\r
+\r
+    //音频获取源\r
+    //设置采样频率,44100是目前的标准\r
+    private int sampleRateInHz = 16000;\r
+    //设置输入声道为默认 CHANNEL_IN_DEFAULT    双声道立体声 CHANNEL_IN_STEREO  单声道为 CHANNEL_IN_MONO\r
+    private int channelInConfig = AudioFormat.CHANNEL_IN_STEREO;\r
+    //设置输出声道为默认 CHANNEL_OUT_DEFAULT   双声道立体声 CHANNEL_OUT_STEREO  单声道为 CHANNEL_OUT_MONO\r
+    private int channelOutConfig = AudioFormat.CHANNEL_OUT_STEREO;\r
+    //音频数据格式:PCM16位\r
+    private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;\r
+    //录音状态\r
+    private AudioTrack audioTrack = null;\r
+    boolean flag = true;\r
+    int dbmd4_handle = 0;\r
+    private String path = "/storage/emulated/0/Music/dsp.pcm";\r
+    boolean isClose = false;\r
+\r
+    private ButtonViewTwo buttonView;\r
+    boolean running;\r
+    private Button begain_record;\r
+    private MediaPlayer mediaPlayer;\r
+    private Button begain_play;\r
+    AudioManager audioManager;\r
+    int maxVolume;\r
+\r
+    static {\r
+        // build.gradle里面 android\defaultConfig\ndk\moduleName 的名称\r
+        // Android.mk, LOCAL_MODULE 的名称\r
+        System.loadLibrary("dbmd4_test_jni");\r
+    }\r
+\r
+    //(JNIEnv *env, jobject thiz,jint card ,jint device,jint channels,jint bits,jint rate)\r
+    public static native int dbmd4_open(int card, int device, int channels, int bits, int rate);\r
+\r
+    public static native int dbmd4_get_buffersize(int dbmd4_handle);\r
+\r
+    //jint dbmd4_read_buffer(JNIEnv *env, jobject thiz,jint dbmd4_handle,jbyteArray buffer, jint length)\r
+    public static native int dbmd4_read_buffer(int dbmd4_handle, byte[] buffer, int length);\r
+\r
+    //static void dbmd4_close(JNIEnv *env, jobject thiz,jint dbmd4_handle)\r
+    public static native void dbmd4_close(int dbmd4_handle);\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.dsp_layout);\r
+        initUI();\r
+        setMaxVolum();\r
+    }\r
+\r
+    private void setMaxVolum() {\r
+        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);\r
+        maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);\r
+        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,\r
+                maxVolume, AudioManager.FLAG_SHOW_UI);\r
+    }\r
+\r
+    private void begain() {\r
+        dbmd4_handle = dbmd4_open(2, 0, 2, 16, 16000);\r
+        Log.i("dxc", "dbmd4_handle " + dbmd4_handle);\r
+//        File file = new File("/storage/emulated/legacy/Music/16k.pcm");\r
+//        playRecord(file, 0);\r
+        if (dbmd4_handle != 0) {\r
+            final int bufferSize = dbmd4_get_buffersize(dbmd4_handle);\r
+            final byte[] bytes = new byte[bufferSize]; //intToByteArray(bufferSize);\r
+            Log.i("dxc", "dbmd4_handle 1 bufferSize" + bufferSize);\r
+//            new Thread(new Runnable() {\r
+//                @Override\r
+//                public void run() {\r
+                    int i = 10;\r
+                    byte[] bytesCopy = new byte[0];\r
+                    while (i > 0) {\r
+//                        playMedia();\r
+                        Log.i("dxc", "dbmd4_handle i" + i);\r
+                        i--;\r
+                        int result = dbmd4_read_buffer(dbmd4_handle, bytes, bufferSize);\r
+                        Log.i("dxc", "dbmd4_handle dbmd4_read_buffer result" + result);\r
+                        if (result != 0) {\r
+                            bytesCopy = byteMerger(bytesCopy, bytes);\r
+                        } else {\r
+                            flag = false;\r
+                            return;\r
+                        }\r
+                    }\r
+                    Log.i("dxc", "dbmd4_handle byte len " + bytesCopy.length);\r
+                    if (bytesCopy.length > 0) {\r
+                        try {\r
+                            writeBytesToFile(bytesCopy);\r
+                        } catch (IOException e) {\r
+                            e.printStackTrace();\r
+                        }\r
+                    }\r
+                    Toast.makeText(this, "录制结束", Toast.LENGTH_LONG).show();\r
+                    begain_record.setText(getResources().getString(R.string.startRecord));\r
+                    begain_record.setClickable(true);\r
+                    mHandler.sendEmptyMessageDelayed(0, 0);\r
+//                }\r
+//            }).start();\r
+\r
+        }\r
+\r
+    }\r
+\r
+    private Handler mHandler = new Handler(new Handler.Callback() {\r
+        @Override\r
+        public boolean handleMessage(Message message) {\r
+            Log.i("dxc","handleMessage");\r
+            releaseMedia();\r
+            dbmd4_close(dbmd4_handle);\r
+            isClose = true;\r
+            flag = false;\r
+            return false;\r
+        }\r
+    });\r
+\r
+    private void initUI() {\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.setSuccessColor();\r
+        buttonView.btn_left.setClickable(true);\r
+\r
+        begain_record = (Button) findViewById(R.id.begain_record);\r
+        begain_record.setOnClickListener(this);\r
+\r
+        begain_play = (Button) findViewById(R.id.begain_play);\r
+        begain_play.setOnClickListener(this);\r
+\r
+        Intent intent = getIntent();\r
+        running = false;\r
+        if (intent != null) {\r
+            running = intent.getBooleanExtra("running", false);\r
+        }\r
+    }\r
+\r
+    private void playMedia() {\r
+        mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei);\r
+        if (mediaPlayer != null) {\r
+            mediaPlayer.stop();\r
+        }\r
+        try {\r
+            mediaPlayer.setLooping(true);\r
+            mediaPlayer.prepare();\r
+            mediaPlayer.start();\r
+            return;\r
+        } catch (IllegalStateException e) {\r
+            return;\r
+        } catch (IOException e) {\r
+        }\r
+    }\r
+\r
+    private void releaseMedia() {\r
+        if (mediaPlayer != null) {\r
+            mediaPlayer.release();\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public void onClick(View view) {\r
+        Intent intent = new Intent(this, HeartRate.class);\r
+        intent.putExtra("running", true);\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        switch (view.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("dsp", "true").commit();\r
+\r
+                finish();\r
+\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("dsp", "false").commit();\r
+                finish();\r
+\r
+                break;\r
+            case  R.id.begain_record:\r
+                begain_record.setText(getResources().getString(R.string.recordStart));\r
+                begain_record.setClickable(false);\r
+                begain();\r
+                break;\r
+\r
+            case R.id.begain_play:\r
+                File file = new File(path);\r
+                playRecord(file, 0);\r
+                break;\r
+        }\r
+    }\r
+\r
+    @Override\r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+        // 防止多次关闭\r
+        if (!isClose) {\r
+            dbmd4_close(dbmd4_handle);\r
+        }\r
+        delFile(path);\r
+        stopPlay();\r
+        releaseMedia();\r
+        mHandler.removeCallbacksAndMessages(null);\r
+    }\r
+\r
+    /****播放录音***/\r
+    public void playRecord(File file, int offset){\r
+        try {\r
+            if (audioTrack != null){\r
+                stopPlay();\r
+            }\r
+            int length = (int) file.length();\r
+            audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,\r
+                    sampleRateInHz,\r
+                    channelOutConfig,\r
+                    audioFormat,\r
+                    length,\r
+                    AudioTrack.MODE_STREAM);\r
+            audioTrack.play();\r
+            FileInputStream is = new FileInputStream(file);\r
+            BufferedInputStream bis = new BufferedInputStream(is);\r
+            DataInputStream dis = new DataInputStream(bis);\r
+            byte []by = new byte[length];\r
+            int i = 0;\r
+            while (dis.available() > 0){\r
+                by[i] = dis.readByte();\r
+                i++;\r
+            }\r
+            dis.close();\r
+            bis.close();\r
+            is.close();\r
+            playAudioTrack(by, offset, length);\r
+//            stopPlay();\r
+        }catch (Exception e){\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+    /**\r
+     *音频数据写入audioTrack\r
+     * @param audioData\r
+     * @param offset\r
+     * @param length\r
+     */\r
+    public void playAudioTrack(byte []audioData, int offset, int length){\r
+        try {\r
+            if (audioData == null || length == 0){\r
+                return ;\r
+            }\r
+            audioTrack.write(audioData, offset, length);\r
+        }catch (Exception e){\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+    /****停止播放***/\r
+    public void stopPlay(){\r
+        try {\r
+            if (audioTrack != null){\r
+//                audioTrack.stop();\r
+                audioTrack.release();\r
+                audioTrack = null;\r
+            }\r
+        }catch (Exception e){\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+\r
+\r
+    public static byte[] byteMerger(byte[] bt1, byte[] bt2) {\r
+        byte[] bt3 = new byte[bt1.length + bt2.length];\r
+        int i = 0;\r
+        for (byte bt : bt1) {\r
+            bt3[i] = bt;\r
+            i++;\r
+        }\r
+\r
+        for (byte bt : bt2) {\r
+            bt3[i] = bt;\r
+            i++;\r
+        }\r
+        return bt3;\r
+    }\r
+\r
+    public static byte[] intToByteArray(int i) {\r
+        byte[] result = new byte[4];\r
+        // 由高位到低位\r
+        result[0] = (byte) ((i >> 24) & 0xFF);\r
+        result[1] = (byte) ((i >> 16) & 0xFF);\r
+        result[2] = (byte) ((i >> 8) & 0xFF);\r
+        result[3] = (byte) (i & 0xFF);\r
+        return result;\r
+    }\r
+\r
+    public static int bytesToInt(byte[] src, int offset) {\r
+        int value;\r
+        value = (int) ((src[offset] & 0xFF)\r
+                | ((src[offset+1] & 0xFF)<<8)\r
+                | ((src[offset+2] & 0xFF)<<16)\r
+                | ((src[offset+3] & 0xFF)<<24));\r
+        return value;\r
+    }\r
+\r
+    public static char byteToChar(byte[] b) {\r
+        int hi = (b[0] & 0xFF) << 8;\r
+        int lo = b[1] & 0xFF;\r
+        return (char) (hi | lo);\r
+    }\r
+\r
+    public void writeBytesToFile(byte[] bs) throws IOException {\r
+//        String s = "aaaaaaaa";\r
+//        byte[] bs= s.getBytes();\r
+        OutputStream out = new FileOutputStream(path);\r
+        InputStream is = new ByteArrayInputStream(bs);\r
+        byte[] buff = new byte[1024];\r
+        int len = 0;\r
+        while((len=is.read(buff))!=-1){\r
+            out.write(buff, 0, len);\r
+        }\r
+        is.close();\r
+        out.close();\r
+    }\r
+\r
+    public void delFile(String path){\r
+        File file=new File(path);\r
+        if(file.exists())\r
+            file.delete();\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/DialerTestActivity.java b/app/src/main/java/mobile/miki/DialerTestActivity.java
new file mode 100644 (file)
index 0000000..c2ee799
--- /dev/null
@@ -0,0 +1,198 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.ComponentName;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.net.Uri;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.telephony.TelephonyManager;\r
+import android.view.View;\r
+\r
+import mobile.miki.ageingmode.AgeingModeActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class DialerTestActivity extends BaseActivity implements android.view.View.OnClickListener{\r
+    private static final String TAG = "DialerTestActivity";\r
+    private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+       boolean isEgeingMode = false;\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        MyApplication.getInstance().addActivity(this);\r
+        setContentView(R.layout.dialer_test_layout);\r
+\r
+        getRingIntent();\r
+        \r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               //非老化模式就直接拨出电话\r
+               \r
+               if(isEgeingMode) {\r
+                       ComponentName componentName = new ComponentName("com.android.dialer", "com.android.dialer.DialtactsActivity");\r
+                       Intent dialerIntent = new Intent(Intent.ACTION_MAIN);\r
+                       dialerIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
+                       dialerIntent.setComponent(componentName);\r
+                       try {\r
+                               startActivity(dialerIntent);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               } else {\r
+                       testCallBtnClicked(null);\r
+               }\r
+\r
+    }\r
+    \r
+    private void getRingIntent() {\r
+        Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                               pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+                       \r
+               }\r
+               \r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+   }\r
+    \r
+    public void testCallBtnClicked(View view) {\r
+       //Intent call = new Intent(Intent.ACTION_CALL_EMERGENCY, Uri.parse("tel:10086"));\r
+//     Intent call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:112"));\r
+               Intent call = null;\r
+               if (isChinaMobile(this)) {\r
+                       call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10086"));\r
+               } else if (isChinaUnicom(this)) {\r
+                       call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10010"));\r
+               } else if(isChinaTelecom(this)) {\r
+                       call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10000"));\r
+               } else {\r
+                       call = new Intent("android.intent.action.CALL_PRIVILEGED",Uri.parse("tel:"+112));\r
+               }\r
+               startActivity(call);\r
+    }\r
+    \r
+\r
+    @Override\r
+       public void onClick(View arg0) {\r
+\r
+               Intent intent;\r
+               if (pcbatest){\r
+                       intent = new Intent(this, GravitySensorActivity.class);\r
+\r
+               }else{\r
+                       intent = new Intent(this, BrightnessTest.class);\r
+               }\r
+\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       //如果当前是老化模式测试\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_dialer", "true")\r
+                               .commit();\r
+                       }else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("dialer", "true")\r
+                                               .commit();\r
+                       }\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_dialer", "false")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("dialer", "false")\r
+                                               .commit();\r
+                       }\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       protected void onResume() {\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               super.onResume();\r
+       }\r
+       \r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+\r
+       /** SIM卡是中国移动 */\r
+       public static boolean isChinaMobile(Context context) {\r
+               String imsi = getSimOperator(context);\r
+               if (imsi == null) return false;\r
+               return imsi.startsWith("46000") || imsi.startsWith("46002") || imsi.startsWith("46007");\r
+       }\r
+\r
+       /** SIM卡是中国联通 */\r
+       public static boolean isChinaUnicom(Context context) {\r
+               String imsi = getSimOperator(context);\r
+               if (imsi == null) return false;\r
+               return imsi.startsWith("46001");\r
+       }\r
+\r
+       /** SIM卡是中国电信 */\r
+       public static boolean isChinaTelecom(Context context) {\r
+               String imsi = getSimOperator(context);\r
+               if (imsi == null) return false;\r
+               return imsi.startsWith("46003");\r
+       }\r
+\r
+       private static String getSimOperator(Context context) {\r
+               TelephonyManager tm = (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);\r
+               return tm.getSubscriberId();\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/GpsTest.java b/app/src/main/java/mobile/miki/GpsTest.java
new file mode 100644 (file)
index 0000000..db60476
--- /dev/null
@@ -0,0 +1,473 @@
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.location.GpsSatellite;\r
+import android.location.GpsStatus;\r
+import android.location.Location;\r
+import android.location.LocationListener;\r
+import android.location.LocationManager;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.provider.Settings;\r
+import android.text.TextUtils;\r
+import android.util.Log;\r
+import android.view.Display;\r
+import android.view.View;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import java.text.DecimalFormat;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class GpsTest extends BaseActivity implements\r
+        android.view.View.OnClickListener {\r
+    private LocationManager locationManager;\r
+    Location location;\r
+\r
+    private String locationInfo;\r
+    private List<GpsSatellite> numSatelliteList = new ArrayList<GpsSatellite>(); // 卫星信号\r
+    private List<GpsSatellite> max3Satellite = new ArrayList<GpsSatellite>(); // 卫星信号\r
+    private int satelliteInfo = 0;\r
+\r
+    private TextView tvGps;\r
+    private TextView tvResult;\r
+    private TextView tv_satellites;\r
+    private ButtonViewTwo buttonView;\r
+    boolean running;\r
+    boolean pcbatest;\r
+\r
+    private ReadGpsThread readGpsThread;\r
+    private double longitude;\r
+    private double latitude;\r
+\r
+    int gpsMode;\r
+    int numberOfSatellites;\r
+\r
+    @Override\r
+    protected void onCreate(Bundle arg0) {\r
+        // TODO Auto-generated method stub\r
+        super.onCreate(arg0);\r
+        MyApplication.getInstance().addActivity(this);\r
+        setContentView(R.layout.gps_test_new);\r
+//             initGPS();\r
+        //打开gps开关\r
+        gpsMode = Settings.Secure.getInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE,\r
+                Settings.Secure.LOCATION_MODE_OFF);\r
+        if (gpsMode != Settings.Secure.LOCATION_MODE_HIGH_ACCURACY) {\r
+            Settings.Secure.putInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);\r
+        }\r
+\r
+        Intent intent = getIntent();\r
+        running = false;\r
+        pcbatest = false;\r
+        if (intent != null) {\r
+            running = intent.getBooleanExtra("running", false);\r
+            pcbatest = intent.getBooleanExtra("pcbatest", false);\r
+        }\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.btn_left.setClickable(false);\r
+        tvGps = (TextView) findViewById(R.id.tv_gps);\r
+        tvResult = (TextView) findViewById(R.id.tv_result);\r
+        tvResult.setText(getResources().getString(R.string.gps_searching));\r
+        tv_satellites = (TextView)findViewById(R.id.tv_satellites);\r
+        // 获取location对象\r
+        locationManager = (LocationManager) this\r
+                .getSystemService(Context.LOCATION_SERVICE);\r
+        readGpsThread = new ReadGpsThread();\r
+        readGpsThread.start();\r
+        locationManager.addGpsStatusListener(statusListener);//搜星\r
+        getLocationInfo();\r
+\r
+    }\r
+\r
+    public String getLocationInfo() {\r
+\r
+        location = getBestLocation(locationManager);\r
+        // locationInfo = updateView(location);\r
+        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,\r
+                3000, 8, locationListener);\r
+        // 定位成功返回数据\r
+// tvGps.setText(locationInfo);\r
+//             if (!"".equals(locationInfo)) {\r
+//                     pass();\r
+//             }\r
+\r
+        return locationInfo;\r
+    }\r
+\r
+    boolean isFrist = true;\r
+\r
+    private String updateView(Location location) {\r
+\r
+        if (location != null) {\r
+            longitude = location.getLongitude();\r
+            latitude = location.getLatitude();\r
+            if (longitude > 0 && latitude > 0) {\r
+                tvResult.setText(getResources().getString(\r
+                        R.string.location_sucess));\r
+                if (readGpsThread != null) {\r
+                    readGpsThread.endThread();\r
+                }\r
+                if (isFrist) {\r
+                    isFrist = false;\r
+                    pass();// 定位成功,自动跳转2016.9.19 tyy\r
+                }\r
+\r
+            } else {\r
+                tvResult.setText(getResources().getString(\r
+                        R.string.location_fail));\r
+            }\r
+\r
+            long gpsTime = location.getTime();\r
+\r
+            double altitude = location.getAltitude();// 海拔\r
+\r
+            // 速度\r
+            float speed = location.getSpeed();// 速度 单位 m/s\r
+            speed = (speed * 60) / 1000; // 单位转换 km/h\r
+            // 保留一位小数点\r
+            DecimalFormat dfSpeed = new DecimalFormat("#.0");\r
+            String strSpeed = dfSpeed.format(speed);\r
+            speed = Float.parseFloat(strSpeed);\r
+            int intSpeed = (int) (speed * 10);\r
+            // SimpleLogger.d("intSpeed:"+intSpeed);\r
+\r
+            // 经纬度 保留6位小数点\r
+            DecimalFormat df = new DecimalFormat("#.000000");\r
+            String strLatitude = df.format(latitude);\r
+            String strLongitude = df.format(longitude);\r
+\r
+            StringBuffer sb = new StringBuffer();\r
+            String string = getResources().getString(R.string.longitude);\r
+            String string2 = getResources().getString(R.string.latitude);\r
+            sb.append(string + strLongitude + "\n" + string2 + strLatitude);\r
+            // SimpleLogger.d("satelliteInfo:"+satelliteInfo);\r
+            return sb.toString();\r
+        } else {\r
+            // textView.setText("");\r
+            return "";\r
+        }\r
+    }\r
+\r
+    public double[] getGpsInfo() {\r
+        String tude = locationInfo;\r
+        if (!TextUtils.isEmpty(tude)) {\r
+            String[] longitudeAndLatitude = tude.split(" ");\r
+            String longitude = longitudeAndLatitude[0];\r
+            String latitude = longitudeAndLatitude[1];\r
+\r
+            return new double[]{Double.parseDouble(latitude),\r
+                    Double.parseDouble(longitude)};\r
+        }\r
+        return null;\r
+    }\r
+\r
+    /**\r
+     * 获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时\r
+     * ,则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空\r
+     *\r
+     * @param locationManager\r
+     * @return\r
+     */\r
+    private Location getBestLocation(LocationManager locationManager) {\r
+        Location result = null;\r
+        if (locationManager != null) {\r
+            result = locationManager\r
+                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);\r
+            if (result != null) {\r
+\r
+                return result;\r
+            } else {\r
+                result = locationManager\r
+                        .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);\r
+                return result;\r
+            }\r
+        }\r
+        return result;\r
+    }\r
+\r
+    class ReadGpsThread extends Thread {\r
+        private boolean isRunning = false;\r
+        private int DELAY_MS = 1000;\r
+        private int count = 0;\r
+\r
+        public ReadGpsThread() {\r
+            isRunning = true;\r
+        }\r
+\r
+        public void endThread() {\r
+            isRunning = false;\r
+            readGpsThread = null;\r
+        }\r
+\r
+        @Override\r
+        public void run() {\r
+            while (isRunning) {\r
+                count++;\r
+                if (numberOfSatellites >= 3) {\r
+                    return;\r
+                }\r
+                // 15秒没定位成功,则失败\r
+                if (count == 120) {\r
+                    Message msg = new Message();\r
+                    temHandler.sendMessage(msg);\r
+                    if (readGpsThread != null) {\r
+                        endThread();\r
+                        return;\r
+                    }\r
+                }\r
+                try {\r
+                    Thread.sleep(DELAY_MS);\r
+                } catch (Exception e) {\r
+                    // TODO: handle exception\r
+                }\r
+            }\r
+            super.run();\r
+        }\r
+    }\r
+\r
+    Handler temHandler = new Handler(new Handler.Callback() {\r
+        @Override\r
+        public boolean handleMessage(Message message) {\r
+            tvResult.setText(getResources().getString(\r
+                    R.string.location_fail));\r
+            if (readGpsThread != null) {\r
+                readGpsThread.endThread();\r
+            }\r
+            return false;\r
+        }\r
+    });\r
+\r
+    @Override\r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+        if (readGpsThread != null) {\r
+            readGpsThread.endThread();\r
+        }\r
+        isFrist = false;\r
+        flag = false;\r
+        if (locationManager != null) {\r
+            locationManager.removeUpdates(locationListener);\r
+            locationManager.removeGpsStatusListener(statusListener);\r
+        }\r
+        if (locationListener != null) {\r
+            locationListener = null;\r
+        }\r
+        if (statusListener != null) {\r
+            statusListener = null;\r
+        }\r
+\r
+        //还原gps状态\r
+        Settings.Secure.putInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE, gpsMode);\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onClick(View arg0) {\r
+        Display myDisplay = getWindowManager().getDefaultDisplay();\r
+        Intent intent;\r
+        intent = new Intent(this, RingtoneActivity.class);\r
+\r
+        intent.putExtra("running", true);\r
+        intent.putExtra("pcbatest",pcbatest);\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        // TestResult testResult = (TestResult) getApplicationContext();\r
+        switch (arg0.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("gps", "true").commit();\r
+                finish();\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("gps", "false").commit();\r
+                finish();\r
+                break;\r
+        }\r
+    }\r
+\r
+    public void pass() {\r
+        Toast.makeText(getApplicationContext(),\r
+                getResources().getString(R.string.ins_gsensor_toast),\r
+                Toast.LENGTH_SHORT).show();\r
+        buttonView.setSuccessColor();\r
+\r
+        PreferenceManager.getDefaultSharedPreferences(getApplicationContext())\r
+                .edit().putString("gps", "true").commit();\r
+        if (running) {\r
+            new Handler() {\r
+                @Override\r
+                public void handleMessage(Message msg) {\r
+                    super.handleMessage(msg);\r
+                    switch (msg.what) {\r
+                        case 0:\r
+\r
+                            Intent intent;\r
+                            intent = new Intent(GpsTest.this,\r
+                                    RingtoneActivity.class);\r
+                            intent.putExtra("running", true);\r
+                            intent.putExtra("pcbatest", pcbatest);\r
+                            startActivity(intent);\r
+                            GpsTest.this.finish();\r
+                            break;\r
+                        default:\r
+                            break;\r
+                    }\r
+                }\r
+\r
+            }.sendEmptyMessageDelayed(0, 1000);\r
+        } else {\r
+            buttonView.btn_left.setClickable(true);\r
+        }\r
+\r
+\r
+    }\r
+\r
+    @Override\r
+    public void onBackPressed() {\r
+        // super.onBackPressed();\r
+        if (running) {\r
+            Intent intent = new Intent(this, TestMainList.class);\r
+            startActivity(intent);\r
+            finish();\r
+        } else {\r
+            finish();\r
+        }\r
+    }\r
+\r
+\r
+    LocationListener locationListener = new LocationListener() {\r
+\r
+        @Override\r
+        public void onStatusChanged(String provider, int status,\r
+                                    Bundle extras) {\r
+        }\r
+\r
+        @Override\r
+        public void onProviderEnabled(String provider) {\r
+//                     locationInfo = updateView(locationManager\r
+//                                     .getLastKnownLocation(provider));\r
+        }\r
+\r
+        @Override\r
+        public void onProviderDisabled(String provider) {\r
+//                     locationInfo = updateView(null);\r
+        }\r
+\r
+        @Override\r
+        public void onLocationChanged(Location location) {\r
+            location = getBestLocation(locationManager);// 每次都去获取GPS_PROVIDER优先的location对象\r
+//                     locationInfo = updateView(location);\r
+        }\r
+    };\r
+\r
+\r
+    /////////////////搜索卫星数\r
+    boolean flag = true;//只操作一次pass\r
+    private GpsStatus.Listener statusListener = new GpsStatus.Listener() {\r
+        public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数\r
+            GpsStatus status = locationManager.getGpsStatus(null); //取当前状态\r
+            int satelliteInfo = updateGpsStatus(event, status);\r
+            numberOfSatellites = satelliteInfo;\r
+            if (numberOfSatellites >= 3) {\r
+                tvResult.setText(getResources().getString(\r
+                        R.string.location_sucess));\r
+                if (readGpsThread != null) {\r
+                    readGpsThread.endThread();\r
+                }\r
+                if (flag) {\r
+                    flag = false;\r
+                   pass();\r
+                }\r
+            }\r
+\r
+        }\r
+    };\r
+\r
+    private void get3MaxSnrSatellite(GpsSatellite gst){\r
+\r
+        float snr = gst.getSnr();\r
+        max3Satellite.add(gst);//先添加进来。\r
+\r
+        //从大到小排序\r
+        for(int i=0;i<max3Satellite.size();i++) {\r
+            for (int j=i;j<max3Satellite.size();j++) {\r
+                if (max3Satellite.get(i).getSnr() < max3Satellite.get(j).getSnr()) {\r
+                    GpsSatellite ts = max3Satellite.get(j);\r
+                    max3Satellite.remove(j);\r
+                    max3Satellite.add(i, ts);//大的放前面\r
+                }\r
+            }\r
+        }\r
+        if (max3Satellite.size()>3){ //超过三个,谁小就删掉\r
+                max3Satellite.remove(3);\r
+        }\r
+\r
+    }\r
+    private int updateGpsStatus(int event, GpsStatus status) {\r
+        StringBuilder sb2 = new StringBuilder("");\r
+        float strengh = 0;\r
+        if (status == null) {\r
+            sb2.append("搜索到卫星个数:" + 0);\r
+        } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {\r
+            int maxSatellites = status.getMaxSatellites();\r
+            Iterator<GpsSatellite> it = status.getSatellites().iterator();\r
+            numSatelliteList.clear();\r
+            int count = 0;\r
+            while (it.hasNext() && count <= maxSatellites) {\r
+                GpsSatellite s = it.next();\r
+                float snr = s.getSnr();\r
+                if (snr >= 20) {//只有信躁比不为0的时候才算搜到了星\r
+                    strengh = snr;\r
+//                             Toast.makeText(this, "信躁比大于20", Toast.LENGTH_LONG).show();\r
+                    //排序取得最大3个SNR\r
+                    get3MaxSnrSatellite(s);\r
+                }\r
+                numSatelliteList.add(s);\r
+                count++;\r
+            }\r
+            sb2.append("搜索到卫星个数(SNR>20):" + numSatelliteList.size()+" \n Max 3 SNRs[ " );\r
+            for (int i=0;i<max3Satellite.size();i++){\r
+                sb2.append(max3Satellite.get(i).getSnr());\r
+                sb2.append(", ");\r
+            }\r
+            sb2.append(" ]");\r
+        }\r
+\r
+\r
+        Log.e("dxc", sb2.toString());\r
+        //tv_satellites.setText(null);\r
+        tv_satellites.setText(sb2);\r
+        if (strengh >= 20 && numSatelliteList.size() >= 3) {\r
+            return numSatelliteList.size();\r
+        }\r
+\r
+        return 0;\r
+    }\r
+    ////////////////\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/GravitySensorActivity.java b/app/src/main/java/mobile/miki/GravitySensorActivity.java
new file mode 100644 (file)
index 0000000..2a9e878
--- /dev/null
@@ -0,0 +1,209 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.hardware.Sensor;\r
+import android.hardware.SensorEvent;\r
+import android.hardware.SensorEventListener;\r
+import android.hardware.SensorManager;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.ImageView;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class GravitySensorActivity extends BaseActivity\r
+               implements SensorEventListener, android.view.View.OnClickListener {\r
+       private SensorManager sensorManager;\r
+       boolean gb_up = false;\r
+       boolean gb_left = false;\r
+       boolean gb_right = false;\r
+       boolean gb_down = false;\r
+       ImageView gs_up;\r
+       ImageView gs_left;\r
+       ImageView gs_right;\r
+       ImageView gs_down;\r
+       String s1;\r
+       TextView t1;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+       TextView xyzValue;\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               s1 = getString(R.string.ins_gsensor_toast);\r
+               setContentView(R.layout.gravity_sensor_layout);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+                       pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+               }\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+\r
+               //pcba测试的话,可以直接看数值人工测试是否成功。\r
+               if (pcbatest) {\r
+                       buttonView.btn_left.setClickable(true);\r
+                       buttonView.setSuccessColor();\r
+               }else{\r
+                       buttonView.btn_left.setClickable(false);\r
+               }\r
+               gs_up = (ImageView) findViewById(R.id.img_gsu);\r
+\r
+               gs_left = (ImageView) findViewById(R.id.img_gsl);\r
+\r
+               gs_right = (ImageView) findViewById(R.id.img_gsr);\r
+\r
+               gs_down = (ImageView) findViewById(R.id.img_gsd);\r
+               t1 = (TextView) findViewById(R.id.ins);\r
+               xyzValue = (TextView) findViewById(R.id.xyz_value);\r
+               sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);\r
+               sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 0x0);\r
+               handler.sendEmptyMessageDelayed(0, 500);\r
+       }\r
+\r
+       public void onAccuracyChanged(Sensor sensor, int accuracy) {\r
+       }\r
+\r
+       public void onSensorChanged(SensorEvent event) {\r
+               Log.i("dxc", "onSensorChanged x:" + event.values[0x0] + " y:" + event.values[0x1] + " z:" +  event.values[0x2]);\r
+               xyzValue.setText("x:" + String .format("%.2f",event.values[0x0]) + " ,y:" + String .format("%.2f",event.values[0x1]) + " ,z:" + String .format("%.2f",event.values[0x2]));\r
+               ((TextView) findViewById(R.id.tvGraX)).setText(String.valueOf(event.values[0x0]));\r
+               ((TextView) findViewById(R.id.tvGraY)).setText(String.valueOf(event.values[0x1]));\r
+               ((TextView) findViewById(R.id.tvGraZ)).setText(String.valueOf(event.values[0x2]));\r
+               if (event.values[0x0] > 4.0 && !gb_left) {\r
+                       gs_left.setImageResource(R.drawable.gs_2_l);\r
+                       gb_left = true;\r
+               } else if (event.values[0x0] < -4.0 && !gb_right) {\r
+                       gs_right.setImageResource(R.drawable.gs_2_r);\r
+                       gb_right = true;\r
+               } else if (event.values[0x1] > 5.0 && !gb_down) {\r
+                       gs_down.setImageResource(R.drawable.gs_2_d);\r
+                       gb_down = true;\r
+               } else if (event.values[0x1] < -3.0 && !gb_up) {\r
+                       gs_up.setImageResource(R.drawable.gs_2_u);\r
+                       gb_up = true;\r
+               }\r
+       }\r
+\r
+       protected void onDestroy() {\r
+               sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));\r
+               sensorManager = null;\r
+               super.onDestroy();\r
+       }\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, BatteryTestActivity.class);\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Gsensor", "true")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Gsensor", "false")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       Runnable runnable = new Runnable() {\r
+\r
+               @Override\r
+               public void run() {\r
+\r
+               }\r
+       };\r
+\r
+       Handler handler = new Handler() {\r
+\r
+               @Override\r
+               public void handleMessage(Message msg) {\r
+                       super.handleMessage(msg);\r
+                       switch (msg.what) {\r
+                       case 0:\r
+                               if (gb_left && gb_right && gb_down && gb_up) {\r
+                                       handler.removeMessages(0);\r
+                                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit()\r
+                                                       .putString("Gsensor", "true").commit();\r
+                                       Toast.makeText(GravitySensorActivity.this, getResources().getString(R.string.ins_gsensor_toast),\r
+                                                       Toast.LENGTH_SHORT).show(); \r
+                                       \r
+                                       buttonView.setSuccessColor();\r
+                                       \r
+                                       if (running) {\r
+                                               Intent intent = new Intent(GravitySensorActivity.this, BatteryTestActivity.class);\r
+                                               intent.putExtra("running", true);\r
+                                               intent.putExtra("pcbatest", pcbatest);\r
+                                               startActivity(intent);\r
+                                               finish();\r
+                                       }else{\r
+                                               buttonView.btn_left.setClickable(true);\r
+                                       }\r
+\r
+                               }else{\r
+                                       handler.sendEmptyMessageDelayed(0, 500);\r
+                               }\r
+                               \r
+                               break;\r
+                       \r
+                       \r
+                               \r
+                               \r
+\r
+                       default:\r
+                               break;\r
+                       }\r
+               }\r
+\r
+       };\r
+       \r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/GridAdapter.java b/app/src/main/java/mobile/miki/GridAdapter.java
new file mode 100644 (file)
index 0000000..4f121f7
--- /dev/null
@@ -0,0 +1,43 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.ImageView;\r
+import android.widget.SimpleAdapter;\r
+import android.widget.TextView;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+public class GridAdapter extends SimpleAdapter {\r
+    public static final String CELL_IMAGE = "cellImage";\r
+    public static final String CELL_LABEL = "cellLabel";\r
+    private LayoutInflater inflater;\r
+    //private ArrayList<HashMap<String, Object>> listData = new ArrayList<Map<String, ?>>();\r
+    private ArrayList<HashMap<String, Object>> listData = new ArrayList();\r
+    \r
+    public GridAdapter(Context context, List<Map<String, ?>> data, int resource, String[] from, int[] to) {\r
+        super(context, data, resource, from, to);\r
+        inflater = (LayoutInflater)context.getSystemService("layout_inflater");\r
+        listData = (ArrayList)data;\r
+    }\r
+    \r
+    public View getView(int position, View convertView, ViewGroup parent) {\r
+        if(convertView == null) {\r
+            convertView = inflater.inflate(R.layout.grid_cell, null);\r
+        }\r
+        HashMap<String, Object> map = (HashMap)listData.get(position);\r
+        ((ImageView)convertView.findViewById(R.id.cellImage)).setImageResource(((Integer)map.get("cellImage")).intValue());\r
+        ((TextView)convertView.findViewById(R.id.cellLabel)).setText(String.valueOf(map.get("cellLabel")));\r
+        return convertView;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/HeartRate.java b/app/src/main/java/mobile/miki/HeartRate.java
new file mode 100644 (file)
index 0000000..b8bfc22
--- /dev/null
@@ -0,0 +1,69 @@
+package mobile.miki;\r
+\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.View;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+\r
+public class HeartRate extends BaseActivity implements View.OnClickListener {\r
+\r
+    private ButtonViewTwo buttonView;\r
+    boolean running;\r
+\r
+    static {\r
+        System.loadLibrary("heartrate_test_jni");\r
+    }\r
+    public static native int get_heartrate();\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.heartrate_layout);\r
+        initView();\r
+        int heartrate = get_heartrate();\r
+        Log.i("dxc", "heartrate: " + heartrate);\r
+    }\r
+\r
+    private void initView() {\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.setSuccessColor();\r
+        buttonView.btn_left.setClickable(true);\r
+    }\r
+\r
+    @Override\r
+    public void onClick(View view) {\r
+        Intent intent = new Intent(this, SimDetectActivity.class);\r
+        intent.putExtra("running", true);\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        // TestResult testResult = (TestResult) getApplicationContext();\r
+        switch (view.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent1);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "true")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent1);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "false")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+        }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/KeysTestActivity.java b/app/src/main/java/mobile/miki/KeysTestActivity.java
new file mode 100644 (file)
index 0000000..9a74fe1
--- /dev/null
@@ -0,0 +1,361 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki;\r
+\r
+import android.app.KeyguardManager;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.PowerManager;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.Display;\r
+import android.view.KeyEvent;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+\r
+import cn.davidsu.library.LineWrapContainer;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class KeysTestActivity extends BaseActivity implements\r
+        android.view.View.OnClickListener {\r
+/*\r
+    public static final String AUTO_KEYS_TEST = "mobile.miki.KeysTestActivity";\r
+    public static final String KEY_CODE = "keyCode";\r
+    public static final String NEED_BTN_TAG = "needBtn";\r
+    private String TAG;\r
+*/\r
+    BroadcastReceiver broadcastReceiver;\r
+    private boolean isTesting;\r
+    private BroadcastReceiver mBroadcastReceiver;\r
+    private KeyguardManager.KeyguardLock mKeyguardLock;\r
+    private KeyguardManager mKeyguardManager;\r
+    private KeysTestActivity.ScreenOnOffReceiver screenOnOffReceiver;\r
+    private PowerManager.WakeLock wakeLock;\r
+    boolean running;\r
+    private ButtonViewTwo buttonView;\r
+/*\r
+    private TextView value_KEYCODE_YEN;\r
+    private TextView home1;\r
+    private TextView home2;\r
+    private TableRow TableRow1;\r
+    private TableRow TableRow2;\r
+    private TableRow TableRow3;\r
+    private TextView tv_name2;\r
+\r
+    private boolean key1Pass = false;\r
+    private boolean key2Pass = false;\r
+*/\r
+    private LineWrapContainer lwc;\r
+    private ArrayList<Key> mKeyMapList = new ArrayList<Key>();\r
+\r
+    // G9 的左右按键\r
+//    private static final int KEYCODE_CUSTOM_LEFT = 498;\r
+//    private static final int KEYCODE_CUSTOM_RIGHT = 499;\r
+    private static final int KEYCODE_CUSTOM_LEFT = KeyEvent.KEYCODE_POWER;\r
+    private static final int KEYCODE_CUSTOM_RIGHT = KeyEvent.KEYCODE_VOLUME_DOWN;\r
+\r
+    private Key[] keyMapsDefault = {new Key(KeyEvent.KEYCODE_POWER, "Power")};\r
+    private Key[] keyMapsSUGAR = {new Key(KEYCODE_CUSTOM_LEFT, "Left")\r
+            , new Key(KEYCODE_CUSTOM_RIGHT, "Right")};\r
+    private Key[] keyMapsLieBao = {new Key(KeyEvent.KEYCODE_POWER, "Power")\r
+            , new Key(KeyEvent.KEYCODE_YEN, "Key 1")};\r
+\r
+    public KeysTestActivity() {\r
+        // TAG = "KeysTestActivity";\r
+        mKeyguardManager = null;\r
+        mKeyguardLock = null;\r
+        isTesting = true;\r
+        broadcastReceiver = new BroadcastReceiver() {\r
+            public void onReceive(Context context, Intent intent) {\r
+                int keyCode = intent.getExtras().getInt("keyCode");\r
+            }\r
+        };\r
+        mBroadcastReceiver = new BroadcastReceiver() {\r
+\r
+            public void onReceive(Context context, Intent intent) {\r
+                String action = intent.getAction();\r
+                if ("android.intent.action.CLOSE_SYSTEM_DIALOGS".equals(action)) {\r
+                    String reason = intent.getStringExtra("reason");\r
+                    if ("homekey".equals(reason)) {\r
+                        if (isTesting) {\r
+                            isTesting = false;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        };\r
+    }\r
+\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.keys_test_layout);\r
+        Display myDisplay = getWindowManager().getDefaultDisplay();\r
+        MyApplication.getInstance().addActivity(this);\r
+        initView();\r
+        Intent intent = getIntent();\r
+        running = false;\r
+        if (intent != null) {\r
+            running = intent.getBooleanExtra("running", false);\r
+        }\r
+        mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);\r
+        screenOnOffReceiver = new ScreenOnOffReceiver();\r
+        IntentFilter intentFilter = new IntentFilter();\r
+        intentFilter.addAction("android.intent.action.SCREEN_ON");\r
+        intentFilter.addAction("android.intent.action.SCREEN_OFF");\r
+        registerReceiver(screenOnOffReceiver, intentFilter);\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.btn_left.setClickable(false);\r
+        isTesting = true;\r
+\r
+        if (FTUtils.isLieBao()) {\r
+            mKeyMapList.addAll(Arrays.asList(keyMapsLieBao));\r
+        } else if (FTUtils.isSugar()) {\r
+            mKeyMapList.addAll(Arrays.asList(keyMapsSUGAR));\r
+        } else {\r
+            mKeyMapList.addAll(Arrays.asList(keyMapsDefault));\r
+        }\r
+\r
+        updateKeyMapView();\r
+    }\r
+\r
+    private void initView() {\r
+/*\r
+        value_KEYCODE_YEN = (TextView) findViewById(R.id.tv_value);\r
+        home1 = (TextView) findViewById(R.id.tv_value2);\r
+        home2 = (TextView) findViewById(R.id.tv_value3);\r
+\r
+        TableRow1 = (TableRow) findViewById(R.id.tl_1);\r
+        TableRow2 = (TableRow) findViewById(R.id.tl_2);\r
+        TableRow3 = (TableRow) findViewById(R.id.tl_3);\r
+        tv_name2 = (TextView) findViewById(R.id.tv_name2);\r
+        if (FTUtils.isLieBao()) {\r
+            tv_name2.setText(R.string.keyPower);\r
+            TableRow3.setVisibility(View.GONE);\r
+        } else if (FTUtils.isSugar()) {\r
+            TableRow1.setVisibility(View.GONE);\r
+        }\r
+*/\r
+        lwc = (LineWrapContainer) findViewById(R.id.view_lwc);\r
+        // s06 hall开关\r
+        if (FTUtils.isS06()) {\r
+            lwc.setVisibility(View.GONE);\r
+            Toast.makeText(this, "霍尔开关测试", Toast.LENGTH_LONG).show();\r
+        }\r
+    }\r
+\r
+\r
+    protected void onResume() {\r
+        super.onResume();\r
+        IntentFilter intentFilter = new IntentFilter(\r
+                "mobile.miki.KeysTestActivity");\r
+        registerReceiver(broadcastReceiver, intentFilter);\r
+        IntentFilter mBroadcastIntentFilter = new IntentFilter(\r
+                "android.intent.action.CLOSE_SYSTEM_DIALOGS");\r
+        registerReceiver(mBroadcastReceiver, mBroadcastIntentFilter);\r
+    }\r
+\r
+    @Override\r
+    public boolean onKeyDown(int keyCode, KeyEvent event) {\r
+        Log.e("dxc", " onKeyDown keyCode:" + keyCode);\r
+        if (FTUtils.isS06() && keyCode == KeyEvent.KEYCODE_BACK) {\r
+            pass();\r
+            return true;\r
+        }\r
+/*\r
+        switch (keyCode) {\r
+            case KeyEvent.KEYCODE_YEN:\r
+                value_KEYCODE_YEN.setText(R.string.pass_test);\r
+                key1Pass = true;\r
+                if (key1Pass && key2Pass) {\r
+                    pass();\r
+                }\r
+                return true;\r
+*/\r
+        if (removeKey(keyCode)) {\r
+            updateKeyMapView();\r
+            return true;\r
+        }\r
+\r
+        return super.onKeyDown(keyCode, event);\r
+    }\r
+\r
+\r
+    public void onAttachedToWindow() {\r
+        super.onAttachedToWindow();\r
+    }\r
+\r
+    class ScreenOnOffReceiver extends BroadcastReceiver {\r
+\r
+        public void onReceive(Context context, Intent intent) {\r
+            if ("android.intent.action.SCREEN_ON".equals(intent.getAction())) {\r
+                return;\r
+            }\r
+            if ("android.intent.action.SCREEN_OFF".equals(intent.getAction())) {\r
+                KeysTestActivity.this.mKeyguardLock = KeysTestActivity.this.mKeyguardManager\r
+                        .newKeyguardLock("");\r
+                // KeysTestActivity.this.mKeyguardLock.disableKeyguard();\r
+                KeysTestActivity.this.wakeLock = ((PowerManager) context\r
+                        .getSystemService(Context.POWER_SERVICE)).newWakeLock(\r
+                        PowerManager.ACQUIRE_CAUSES_WAKEUP\r
+                                | PowerManager.SCREEN_DIM_WAKE_LOCK, "mobile.miki:Tag");\r
+                KeysTestActivity.this.wakeLock.acquire();\r
+/*\r
+                if (home1.getText().toString().equals(getString(R.string.pass_test))) {\r
+                    key1Pass = true;\r
+                    home2.setText(R.string.pass_test);\r
+                }\r
+                home1.setText(R.string.pass_test);\r
+                key2Pass = true;\r
+                if (key1Pass && key2Pass && (FTUtils.isSugar() || FTUtils.isLieBao())) {\r
+                    pass();\r
+                } else if (!(FTUtils.isSugar() || FTUtils.isLieBao())) {\r
+                    pass();\r
+                }\r
+*/\r
+\r
+                if (removeKey(KeyEvent.KEYCODE_POWER)) {\r
+                    updateKeyMapView();\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    protected void onDestroy() {\r
+        if (mKeyguardLock != null) {\r
+            wakeLock.acquire();\r
+        }\r
+        isTesting = false;\r
+        unregisterReceiver(screenOnOffReceiver);\r
+        unregisterReceiver(broadcastReceiver);\r
+        unregisterReceiver(mBroadcastReceiver);\r
+        super.onDestroy();\r
+    }\r
+\r
+    public void onReturnBtnClicked(View view) {\r
+        if (running) {\r
+            Intent intent = new Intent(this, TestMainList.class);\r
+            startActivity(intent);\r
+            finish();\r
+        } else {\r
+            isTesting = false;\r
+            try {\r
+                Runtime.getRuntime().exec("logcat -c");\r
+            } catch (IOException e) {\r
+                e.printStackTrace();\r
+            }\r
+            finish();\r
+        }\r
+\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onClick(View arg0) {\r
+\r
+        Intent intent = new Intent(this, TestMainActivity.class);\r
+        if (FTUtils.isSugar()) {\r
+            intent = new Intent(this, BlooToothActivity.class);\r
+        }\r
+        intent.putExtra("running", true);\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        // TestResult testResult = (TestResult) getApplicationContext();\r
+        switch (arg0.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("keys", "true").commit();\r
+                finish();\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager\r
+                        .getDefaultSharedPreferences(getApplicationContext())\r
+                        .edit().putString("keys", "false").commit();\r
+                finish();\r
+                break;\r
+        }\r
+    }\r
+\r
+    private void pass() {\r
+        buttonView.setSuccessColor();\r
+        if (running) {\r
+            Intent intent = new Intent(this, TestMainActivity.class);\r
+            if (FTUtils.isSugar() || FTUtils.isS06()) {\r
+                intent = new Intent(this, BlooToothActivity.class);\r
+            }\r
+            intent.putExtra("running", true);\r
+            startActivity(intent);\r
+            PreferenceManager\r
+                    .getDefaultSharedPreferences(getApplicationContext())\r
+                    .edit().putString("keys", "true").commit();\r
+            finish();\r
+        } else {\r
+            buttonView.btn_left.setClickable(true);\r
+        }\r
+    }\r
+\r
+    private boolean removeKey(int keyCode) {\r
+        boolean found = false;\r
+        for (Key key : mKeyMapList) {\r
+            if (key.code == keyCode) {\r
+                mKeyMapList.remove(key);\r
+                found = true;\r
+                break;\r
+            }\r
+        }\r
+\r
+        return found;\r
+    }\r
+\r
+    private void updateKeyMapView() {\r
+        LayoutInflater inflater = LayoutInflater.from(this);\r
+        lwc.removeAllViews();\r
+\r
+        for (Key key : mKeyMapList) {\r
+            TextView item = (TextView) inflater.inflate(R.layout.keys_test_item, lwc, false);\r
+            item.setText(key.name);\r
+            lwc.addView(item);\r
+        }\r
+\r
+        if (mKeyMapList.size() == 0) {\r
+            pass();\r
+        }\r
+    }\r
+\r
+    class Key {\r
+        int code;\r
+        String name;\r
+\r
+        Key(int code, String name) {\r
+            this.code = code;\r
+            this.name = name;\r
+        }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/LCDtestAgeing.java b/app/src/main/java/mobile/miki/LCDtestAgeing.java
new file mode 100644 (file)
index 0000000..9c1c874
--- /dev/null
@@ -0,0 +1,323 @@
+package mobile.miki;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.graphics.Color;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+import android.os.PowerManager.WakeLock;\r
+import android.os.SystemClock;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.view.WindowManager;\r
+import android.widget.RelativeLayout;\r
+import android.widget.SeekBar;\r
+import android.widget.SeekBar.OnSeekBarChangeListener;\r
+import android.widget.Toast;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Timer;\r
+import java.util.TimerTask;\r
+\r
+import mobile.miki.lcd.LcdJudgActivity;\r
+\r
+public class LCDtestAgeing extends BaseActivity implements OnSeekBarChangeListener {\r
+    private TimerTask task;\r
+    private TimerTask seekbarTask;\r
+       private Timer timer;\r
+    public static int[] BC =null;\r
+    RelativeLayout r1;\r
+    private PowerManager powerManager = null;  \r
+       private WakeLock wakeLock = null;\r
+    int i = 0;\r
+    int b ;\r
+    private SeekBar ScreenBrightnessSeekBar; \r
+    boolean isEgeingMode = false;\r
+    private int TIME = 1000 * 10;\r
+    private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private boolean isShowSeekBar = true;\r
+       public static LCDtestAgeing instance = null;\r
+    \r
+    static {\r
+        int[] bkcolor = new int[14];\r
+        bkcolor[0] = Color.RED;\r
+        bkcolor[1] = Color.BLUE;\r
+        bkcolor[2] = Color.YELLOW;\r
+        bkcolor[3] = Color.GREEN;\r
+        bkcolor[4] = Color.WHITE;\r
+        bkcolor[5] = Color.BLACK;\r
+        bkcolor[6] = Color.GRAY;\r
+        bkcolor[7] = Color.CYAN;\r
+        bkcolor[8] = Color.MAGENTA;\r
+        bkcolor[9] = R.drawable.pic1;\r
+        bkcolor[10] = R.drawable.pic2;\r
+        bkcolor[11] = R.drawable.pic3;\r
+        bkcolor[12] = R.drawable.pic4;\r
+        bkcolor[13] = R.drawable.pic5;\r
+        BC =bkcolor;\r
+    }\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.activity_main);\r
+        instance = this;\r
+        getLcdIntent();\r
+        ageingMode();\r
+\r
+        r1 =(RelativeLayout)findViewById(R.id.st);\r
+        r1.setBackgroundColor(BC[0]);\r
+        \r
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();  \r
+        layoutParams.screenBrightness = b;// b是亮度         \r
+        getWindow().setAttributes(layoutParams); \r
+        ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);  \r
+        //亮度是从0~1中的一个浮点数,由于getProess得到的是Int型,所以扩大10倍,赋值时除以10  \r
+        ScreenBrightnessSeekBar.setMax(10);  \r
+        ScreenBrightnessSeekBar.setProgress(8);\r
+        ScreenBrightnessSeekBar.setOnSeekBarChangeListener(this);\r
+        \r
+        if(isShowSeekBar) {\r
+               Toast.makeText(this, /*"单击可显示亮度进度条,双击可退出"*/this.getResources().getString(R.string.lcdtest_toast),Toast.LENGTH_LONG).show();\r
+        } else {\r
+               ScreenBrightnessSeekBar.setVisibility(View.GONE);\r
+        }\r
+        \r
+        final Handler handler = new Handler(){\r
+            @Override\r
+            public void handleMessage(Message msg) {\r
+                switch (msg.what) {\r
+                    case 1:\r
+                       if(i>8) {\r
+                               r1.setBackgroundResource(BC[i]);\r
+                       } else {\r
+                               r1.setBackgroundColor(BC[i]);\r
+                       }\r
+                        \r
+                        \r
+                        i++;\r
+                        if(i == 14) {\r
+                               i = 0;\r
+                        } \r
+                        if(i>13){\r
+                                               if (timer != null) { \r
+                                               timer.cancel();\r
+                                               timer = null;\r
+                                               }\r
+                                               if (task != null) {  \r
+                                               task.cancel();  \r
+                                               task = null;  \r
+                                               }    \r
+                            finish();\r
+                        }\r
+                        break;\r
+                        \r
+                    case 2:\r
+                       ScreenBrightnessSeekBar.setVisibility(View.GONE);\r
+                       break;\r
+                    default:\r
+                        break;\r
+                }\r
+                super.handleMessage(msg);\r
+            }\r
+        };\r
+        task = new TimerTask() {\r
+            @Override\r
+            public void run() {\r
+                Message message = new Message();\r
+                message.what = 1;\r
+                handler.sendMessage(message);\r
+            }\r
+        };\r
+        seekbarTask = new TimerTask() {\r
+            @Override\r
+            public void run() {\r
+                Message message = new Message();\r
+                message.what = 2;\r
+                handler.sendMessage(message);\r
+            }\r
+        };\r
+        timer = new Timer(true);\r
+        timer.schedule(task, 0, 2000);\r
+        timer.schedule(seekbarTask, 10000, 2000);\r
+        \r
+        \r
+        //触摸即退出\r
+        r1.setOnClickListener(new OnClickListener() {\r
+                       @Override\r
+                       public void onClick(View arg0) {\r
+                               ScreenBrightnessSeekBar.setVisibility(View.VISIBLE);\r
+                               clickTwo();\r
+                               \r
+                       }\r
+               });\r
+               \r
+    }\r
+    \r
+    private void getLcdIntent() {\r
+       Intent intent = getIntent();\r
+       if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                               isShowSeekBar = intent.getBooleanExtra("show_seekbar", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               \r
+                       }\r
+               }\r
+    }\r
+    \r
+    /**\r
+     * 处理老化模式的状态\r
+     */\r
+    private void ageingMode() {\r
+       if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+               // 单项无限循环\r
+               if (WORK_TIME == -1) {\r
+                       WORK_TIME = 100000000;\r
+               } \r
+               TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+               ageingHandler.postDelayed(runnable, TIME); \r
+//             sendBraodCaseReceiver();\r
+       } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+          TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+          ageingHandler.postDelayed(runnable, TIME); \r
+          registerReceiver();\r
+       }\r
+    }\r
+    \r
+    private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopActivity");\r
+               LCDtestAgeing.this.registerReceiver(receiver, filter);\r
+       }\r
+    \r
+    private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+        intent.setAction("com.android.stopTiming");\r
+        sendBroadcast(intent);\r
+    }\r
+\r
+    \r
+    @Override\r
+    protected void onResume() {\r
+       super.onResume();\r
+//     powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);  \r
+//             wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock");  \r
+//             if(wakeLock != null) {\r
+//                     //是否需计算锁的数量  \r
+//                     wakeLock.setReferenceCounted(false);  \r
+//                     //请求屏幕常亮,onResume()方法中执行  \r
+//                     wakeLock.acquire();\r
+//             }\r
+    }\r
+    \r
+    @Override\r
+    protected void onPause() {\r
+       super.onPause();\r
+//     if(wakeLock != null) {\r
+//             //取消屏幕常亮,onPause()方法中执行  \r
+//             wakeLock.release(); \r
+//             wakeLock = null;\r
+//     }\r
+    }\r
+\r
+       @Override\r
+       public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {\r
+       }\r
+\r
+       @Override\r
+       public void onStartTrackingTouch(SeekBar arg0) {\r
+               \r
+       }\r
+\r
+       @Override\r
+       public void onStopTrackingTouch(SeekBar seekBar) {\r
+               setScreenBrightness((float)seekBar.getProgress()/10);\r
+       }\r
+       \r
+       private void setScreenBrightness(float b){  \r
+        //取得window属性保存在layoutParams中  \r
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();  \r
+        layoutParams.screenBrightness = b;//b已经除以10  \r
+        getWindow().setAttributes(layoutParams);  \r
+        //显示修改后的亮度  \r
+        layoutParams = getWindow().getAttributes();  \r
+    } \r
+       \r
+       //实现双击\r
+       List<Long> times = new ArrayList<Long>();\r
+       private void clickTwo() {\r
+        times.add(SystemClock.uptimeMillis());\r
+        if (times.size() == 2) {\r
+            if (times.get(times.size()-1)-times.get(0) < 500) {\r
+                times.clear();\r
+                Intent intent = new Intent(LCDtestAgeing.this,\r
+                               LcdJudgActivity.class);\r
+                intent.putExtra("ageing_mode", true);\r
+                startActivity(intent);\r
+                System.exit(0);\r
+                finish();\r
+//                Toast.makeText(this, "双击方式", 0).show();\r
+            } else {\r
+                times.remove(0);\r
+            }\r
+        }\r
+    }\r
+       \r
+       \r
+       protected void onDestroy() {\r
+               \r
+               if(ageingHandler != null && runnable != null) {\r
+                       ageingHandler.removeCallbacks(runnable);\r
+        }\r
+               if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+               super.onDestroy();\r
+       }\r
+       \r
+       Handler ageingHandler = new Handler();\r
+       Runnable runnable = new Runnable() {  \r
+                 \r
+        @Override  \r
+        public void run() {  \r
+            // handler自带方法实现定时器  \r
+            try {  \r
+//                handler.postDelayed(this, TIME);  \r
+                System.out.println("do...");  \r
+                if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       Intent ageingIntent = new Intent(LCDtestAgeing.this,CameraPreview.class);\r
+                    ageingIntent.putExtra("ageing_mode", true);\r
+                    ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                    ageingIntent.putExtra("work_time", WORK_TIME);\r
+                               startActivity(ageingIntent);\r
+                }\r
+\r
+            } catch (Exception e) {\r
+                e.printStackTrace();  \r
+                System.out.println("exception...");  \r
+            }  \r
+        }  \r
+    };  \r
+    \r
+    /**\r
+        * 获取广播数据\r
+        * \r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       LCDtestAgeing.this.finish();\r
+               }\r
+       }\r
+    \r
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/MikeTest.java b/app/src/main/java/mobile/miki/MikeTest.java
new file mode 100644 (file)
index 0000000..553d117
--- /dev/null
@@ -0,0 +1,458 @@
+/*
+ *  HeadSet Test
+ *
+ *  FileName : MikeTest.java
+ *  Creator  :  xuanyang.feng
+ *  Date     :  2011/12/1
+ *  Comment  :  CIT Test -> HeadSet Test  use  AudioTrack and AudioRecord
+ *   
+ */
+package mobile.miki;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioRecord;
+import android.media.AudioTrack;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import mobile.miki.mainui.ButtonViewTwo;
+import mobile.miki.mainui.TestMainActivity;
+import mobile.miki.mainui.TestMainList;
+import mobile.miki.util.FTUtils;
+
+//import sim.android.mtkcit.CITActivity;
+//import sim.android.mtkcit.R;
+//import sim.android.mtkcit.TestActivity;
+
+public class MikeTest  extends BaseActivity implements android.view.View.OnClickListener{
+       static final String TAG = "AgeingMikeTest";
+       private boolean isRun = false;
+       private boolean isClosing = false;
+       WakeLock mWakeLock;
+       private AudioManager mAudioManager;
+       private RecordThread mRecordThread;
+       int bufferReadResult;
+       ImageButton mRecordButton;
+       TextView txtDescript;
+       byte[]  tmpBuf;
+       public int state = 0;
+       public int mVolume = 0;
+       public int nCurrentMusicVolume;
+       public boolean flag = false;
+       public float LeftVolume;
+       public float RightVolume;
+       private ButtonViewTwo buttonView;
+       boolean running;
+       boolean pcbatest;
+
+       static final int mSourceType = MediaRecorder.AudioSource.MIC;
+
+       static final int SAMPLE_RATE_IN_HZ = 8000;
+
+       static final int channelConfiguration = AudioFormat.CHANNEL_IN_STEREO;
+//     private Button btn_success;
+//     private Button btn_fail;
+       static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
+       public static final int PCBA_TEST = 0;
+       public static final int MACHINE_TEST = 1;
+       int recBufSize = 0, playBufSize = 0;
+       int mAudioBufferSize;
+       int mAudioBufferSimpleSize;
+       int mRecBufferSimpleSize;
+       VUMeter mVUMeter;
+       AudioRecord mAudioRecord;
+       AudioTrack mAudioTrack;
+       private int j;
+       int sampleRate = 8000;
+       int channelConfig = AudioFormat.CHANNEL_IN_MONO;
+       int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
+       final Handler mHandler = new Handler();
+       final Runnable mUpdataResults = new Runnable() {
+               public void run() {
+                       updateUI();
+               }
+       };
+       public static MikeTest instance = null;
+
+       @Override
+       public void onCreate(Bundle icycle) {
+
+               super.onCreate(icycle);
+               MyApplication.getInstance().addActivity(this);
+               setContentView(R.layout.test_mike);
+               Intent intent = getIntent();
+               instance = this;
+               running = false;
+               pcbatest =false;
+               if (intent != null) {
+                       running = intent.getBooleanExtra("running", false);
+                       pcbatest = intent.getBooleanExtra("pcbatest",false);
+               }
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);
+               buttonView.btn_left.setOnClickListener(this);
+               buttonView.btn_right.setOnClickListener(this);
+               buttonView.btn_left.setClickable(false);
+               getCameraIntent();
+               ageingMode();
+       }
+
+       @Override
+       protected void onResume() {
+               buttonView.setSuccessColor();
+               buttonView.btn_left.setClickable(true);
+               super.onResume();
+       }
+
+       @Override
+       protected void onStart() {
+               initResourceRefs();
+
+               super.onStart();
+       }
+
+       private void initResourceRefs() {
+               PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+               mWakeLock = pm
+                               .newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "MicTest");
+
+               mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+               setVolumeControlStream(AudioManager.STREAM_MUSIC);
+
+               // add_s wangkang 2012.5.3 bug896
+               nCurrentMusicVolume = mAudioManager
+                               .getStreamVolume(AudioManager.STREAM_MUSIC);
+               mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
+                               mAudioManager
+                                               .getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
+
+               // initAudioRecord();
+               initAudioTrack();
+               mVUMeter = (VUMeter) findViewById(R.id.uvMeter);
+               mVUMeter.setVolume(0);
+               mVUMeter.invalidate();
+               mRecordThread = new RecordThread();
+               Log.v(TAG, "initResourceRefs");
+               mRecordThread.start();
+       }
+
+
+       private void initAudioRecord() {
+               Log.v(TAG, "initAudioRecord");
+
+               recBufSize = 2 * AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioEncoding);
+
+               mAudioBufferSimpleSize = recBufSize / 2;
+               mAudioRecord = new AudioRecord(mSourceType, SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioFormat, recBufSize);
+               int audioRecordState = mAudioRecord.getState();
+               if (audioRecordState != AudioRecord.STATE_INITIALIZED) {
+                       Log.v(TAG, "AudioRecord is initialized");
+                       finish();
+               }
+       }
+
+       private void initAudioTrack() {
+               Log.v(TAG, "initAudioTrack");
+
+               playBufSize = 2 * AudioTrack.getMinBufferSize(SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioEncoding);
+
+               mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
+                               SAMPLE_RATE_IN_HZ, channelConfiguration, audioFormat,
+                               playBufSize, AudioTrack.MODE_STREAM);
+               int audioTrackState = mAudioTrack.getState();
+               if (audioTrackState != AudioTrack.STATE_INITIALIZED) {
+                       Log.v(TAG, "AudioTrack is initialized");
+                       finish();
+               }
+               initAudioRecord();
+       }
+
+       short[] audioBuffer;
+
+       class RecordThread extends Thread {
+
+               public RecordThread() {
+                       super();
+               }
+
+               public void run() {
+                       Log.d("CIT", "Run");
+                       super.run();
+
+                       if (mAudioRecord == null)
+                               return;
+                       audioBuffer = new short[mAudioBufferSimpleSize];
+                       mAudioRecord.startRecording();
+                       int audioRecordState = mAudioRecord.getRecordingState();
+                       if (audioRecordState != AudioRecord.RECORDSTATE_RECORDING) {
+                               Log.v(TAG, "not recording");
+                               return;
+                       } else {
+                               Log.v(TAG, "start recording");
+
+                       }
+                       
+                       if (mAudioTrack == null)
+                               return;
+                       mAudioTrack.play();
+                       int audioTracktate = mAudioTrack.getPlayState();
+                       if (audioTracktate != AudioTrack.PLAYSTATE_PLAYING) {
+                               Log.v(TAG, "not playing");
+                               return;
+
+                       }
+
+                       Log.v(TAG, "start playing");
+                       mAudioTrack.setStereoVolume(1.0f, 1.0f);
+                       isRun = true;
+                       while (isRun) {
+                               int sampleRate = mAudioRecord.read(audioBuffer, 0,
+                                               mAudioBufferSimpleSize);
+                               if (mAudioBufferSimpleSize < 0) {
+                                       mAudioBufferSimpleSize = 0;
+                               }
+                               
+                               if ((mAudioTrack != null) && (!isClosing))
+                                       try {
+                                               mAudioTrack.write(audioBuffer, 0, mAudioBufferSimpleSize);
+                                       } catch (Exception e) {
+                                               // TODO: handle exception
+                                               e.printStackTrace();
+                                       }
+                                       
+
+                               int v = 0;
+                               for (int i = 0; i < audioBuffer.length; i++) {
+                                       v += audioBuffer[i] * audioBuffer[i];
+                               }
+                               sampleRate = sampleRate < 0 ? 0 : sampleRate;
+                               mVolume = v / (50 * (sampleRate + 1));
+                               Log.v(TAG, "mVolume=" + mVolume);
+                               j++;
+                               if (j < 5) {
+                                       mVolume = 20;
+                               }
+                               mHandler.post(mUpdataResults);
+                               
+                       }
+
+//                     finish();
+
+               }
+
+               public void pause() {
+                       isRun = false;
+               }
+
+               public void start() {
+                       if (!isRun) {
+                               super.start();
+                       }
+               }
+
+       }
+
+       @Override
+       public void onStop() {
+               releaseRec();
+               super.onStop();
+       }
+
+       private void releaseRec() {
+               if (mAudioManager != null) {
+                       //mod_s wangkang 2012.5.3       bug896
+                       mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
+                                       nCurrentMusicVolume, 0);
+                       //mod_s wangkang 2012.5.3       bug896
+               }
+               if (mAudioTrack != null) {
+                       mAudioTrack.release();
+
+               }
+               if (mAudioRecord != null) {
+                       mAudioRecord.release();
+
+               }
+               isRun = false;
+
+       }
+
+       @Override
+       public void onDestroy() {
+               if(mRecordThread != null){
+                       mRecordThread = null;
+               }
+               if(ageHandler != null && runnable != null) {
+                       ageHandler.removeCallbacks(runnable);
+               }
+               if (receiver != null) {
+                       unregisterReceiver(receiver);
+               }
+
+               if(handler != null) {
+                       handler.removeCallbacksAndMessages(handler.obtainMessage());
+               }
+               super.onDestroy();
+       }
+
+       private void updateUI() {
+               
+//             Log.i("MikeTest000", "updateUI(), mVolume=" + mVolume);
+               
+               mVUMeter.setVolume(mVolume);
+               if ((!flag) && (mVolume > 3000)) {
+//                     btn_success.setEnabled(true);
+                       flag = true;
+               }
+       }
+       
+
+    @Override
+       public void onClick(View arg0) {
+               Intent intent = new Intent(this, SimDetectActivity.class);
+               intent.putExtra("running", true);
+               intent.putExtra("pcbatest",pcbatest);
+               Intent intent1 = new Intent(this, TestMainActivity.class);
+               // TestResult testResult = (TestResult) getApplicationContext();
+               switch (arg0.getId()) {
+
+               case R.id.btn_two_left:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("mic", "true")
+                                       .commit();
+                       finish();
+                       break;
+               case R.id.btn_two_right:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("mic", "false")
+                                       .commit();
+                       finish();
+                       break;
+               }
+       }
+    
+    @Override
+       public void onBackPressed() {
+               // super.onBackPressed();
+               if (running) {
+                       Intent intent = new Intent(this, TestMainList.class);
+                       startActivity(intent);
+                       finish();
+               } else {
+                       finish();
+               }
+       }
+
+       boolean isEgeingMode = false;
+       private int TIME = 1000 * 10;
+       private int SINGLEITEM_OR_CYCLE_MODE;
+       private int WORK_TIME;
+       private MyReceiver receiver=null;
+
+       private void getCameraIntent() {
+               Intent intent = getIntent();
+               if (intent != null) {
+                       try {
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);
+                               WORK_TIME = intent.getIntExtra("work_time", 0);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+
+                       }
+               }
+       }
+       /**
+        * 处理老化模式的状态
+        */
+       private void ageingMode() {
+               if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {
+                       // 单项无限循环
+                       if (WORK_TIME == -1) {
+                               WORK_TIME = 100000000;
+                       }
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;
+                       ageHandler.postDelayed(runnable, TIME);
+                       sendBraodCaseReceiver();
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;
+                       ageHandler.postDelayed(runnable, TIME);
+                       registerReceiver();
+               } else {
+                       sendBraodCaseReceiver();
+               }
+       }
+
+       Handler ageHandler = new Handler();
+       Runnable runnable = new Runnable() {
+
+               @Override
+               public void run() {
+                       // handler自带方法实现定时器
+                       try {
+                               if(SINGLEITEM_OR_CYCLE_MODE == 2) {
+                                       Intent ageingIntent = new Intent(MikeTest.this,RingtoneActivity.class);
+                                       if (FTUtils.isSugar()) {
+                                               ageingIntent = new Intent(MikeTest.this,MotorTestActivity.class);
+                                       }
+                                       ageingIntent.putExtra("ageing_mode", true);
+                                       ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);
+                                       ageingIntent.putExtra("work_time", WORK_TIME);
+                                       ageingIntent.putExtra("first_start_service", false);
+                                       startActivity(ageingIntent);
+                               }
+
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                               System.out.println("exception...");
+                       }
+               }
+       };
+
+       private void sendBraodCaseReceiver() {
+               Intent intent = new Intent();
+               intent.setAction("com.android.stopTiming");
+               sendBroadcast(intent);
+       }
+
+       private void registerReceiver() {
+               receiver = new MyReceiver();
+               IntentFilter filter = new IntentFilter();
+               filter.addAction("com.android.stopActivity");
+               registerReceiver(receiver, filter);
+       }
+
+       /**
+        * 获取广播数据
+        *
+        */
+       public class MyReceiver extends BroadcastReceiver {
+               @Override
+               public void onReceive(Context arg0, Intent arg1) {
+                       MikeTest.this.finish();
+               }
+       }
+}
diff --git a/app/src/main/java/mobile/miki/MotorTestActivity.java b/app/src/main/java/mobile/miki/MotorTestActivity.java
new file mode 100644 (file)
index 0000000..f79d586
--- /dev/null
@@ -0,0 +1,203 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Vibrator;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class MotorTestActivity extends BaseActivity implements android.view.View.OnClickListener{\r
+    long[] pattern;\r
+    private Vibrator vibrator;\r
+    boolean running;\r
+       private ButtonViewTwo buttonView;\r
+       public static MotorTestActivity instance = null;\r
+    \r
+    public MotorTestActivity() {\r
+        long[] arrayOfLong = new long[4];\r
+        arrayOfLong[0] = 700L;\r
+        arrayOfLong[1] = 1200L;\r
+        arrayOfLong[2] = 700L;\r
+        arrayOfLong[3] = 1200L;\r
+        this.pattern = arrayOfLong;\r
+    }\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.motor_test_layout);\r
+               instance = this;\r
+        Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+               }\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               getMikeIntent();\r
+               ageingMode();\r
+    }\r
+    \r
+    protected void onResume() {\r
+        super.onResume();\r
+        buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+        vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);\r
+        onShakeBtnClicked(null);\r
+    }\r
+    \r
+    public void onShakeBtnClicked(View view) {\r
+        if(vibrator != null) {\r
+            vibrator.vibrate(pattern, 0x0);\r
+            return;\r
+        }\r
+    }\r
+    \r
+    @Override\r
+    protected void onPause() {\r
+       vibrator.cancel();\r
+       super.onPause();\r
+    }\r
+    \r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+    }\r
+\r
+       boolean isEgeingMode = false;\r
+       private int TIME = 1000 * 10;\r
+       private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private void getMikeIntent() {\r
+               Intent intent = getIntent();\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+\r
+                       }\r
+               }\r
+       }\r
+       /**\r
+        * 处理老化模式的状态\r
+        */\r
+       private void ageingMode() {\r
+               if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+                       // 单项无限循环\r
+                       if (WORK_TIME == -1) {\r
+                               WORK_TIME = 100000000;\r
+                       }\r
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+                       ageHandler.postDelayed(runnable, TIME);\r
+                       sendBraodCaseReceiver();\r
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+                       ageHandler.postDelayed(runnable, TIME);\r
+                       registerReceiver();\r
+               } else {\r
+                       sendBraodCaseReceiver();\r
+               }\r
+       }\r
+\r
+       Handler ageHandler = new Handler();\r
+       Runnable runnable = new Runnable() {\r
+\r
+               @Override\r
+               public void run() {\r
+                       // handler自带方法实现定时器\r
+                       try {\r
+//                handler.postDelayed(this, TIME);\r
+                               System.out.println("do...");\r
+                               if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                                       Intent ageingIntent = new Intent(MotorTestActivity.this,RingtoneActivity.class);\r
+                                       ageingIntent.putExtra("ageing_mode", true);\r
+                                       ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                                       ageingIntent.putExtra("work_time", WORK_TIME);\r
+                                       ageingIntent.putExtra("first_start_service", false);\r
+                                       startActivity(ageingIntent);\r
+                               }\r
+                               finish();\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               System.out.println("exception...");\r
+                       }\r
+               }\r
+       };\r
+\r
+       private void sendBraodCaseReceiver() {\r
+               Intent intent = new Intent();\r
+               intent.setAction("com.android.stopTiming");\r
+               sendBroadcast(intent);\r
+       }\r
+\r
+       private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopActivity");\r
+               registerReceiver(receiver, filter);\r
+       }\r
+\r
+       /**\r
+        * 获取广播数据\r
+        *\r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, UltravioletMonitorActivity.class);\r
+               if (FTUtils.isS06()) {\r
+                       intent = new Intent(this, DSPActivity.class);\r
+               }\r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "true")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "false")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+    \r
+   \r
+}\r
diff --git a/app/src/main/java/mobile/miki/MyApplication.java b/app/src/main/java/mobile/miki/MyApplication.java
new file mode 100644 (file)
index 0000000..cc67f8c
--- /dev/null
@@ -0,0 +1,76 @@
+package mobile.miki;
+
+import android.app.Activity;
+import android.app.Application;
+
+import com.liulishuo.filedownloader.FileDownloader;
+import com.liulishuo.filedownloader.connection.FileDownloadUrlConnection;
+
+import java.net.Proxy;
+import java.util.LinkedList;
+import java.util.List;
+
+import mobile.miki.util.CrashHandler;
+
+public class MyApplication extends Application {
+    public List<Activity> activitys = null;
+    public static MyApplication instance;
+
+    @Override
+    public void onCreate() {
+        // TODO Auto-generated method stub
+        super.onCreate();
+//        initFileDownLoad();
+        CrashHandler crashHandler = CrashHandler.getInstance();
+        crashHandler.init(getApplicationContext());
+    }
+
+    public MyApplication() {
+        activitys = new LinkedList<Activity>();
+
+    }
+
+    private void initFileDownLoad() {
+        FileDownloader.setupOnApplicationOnCreate(this)
+                .connectionCreator(new FileDownloadUrlConnection
+                        .Creator(new FileDownloadUrlConnection.Configuration()
+                        .connectTimeout(15000) // set connection timeout.
+                        .readTimeout(15000) // set read timeout.
+                        .proxy(Proxy.NO_PROXY) // set proxy
+                ))
+                .commit();
+    }
+
+    /**
+     * 单例模式中获取唯一的MyApplication实例
+     *
+     * @return
+     */
+    public static MyApplication getInstance() {
+        if (null == instance) {
+            instance = new MyApplication();
+        }
+        return instance;
+    }
+
+    // 添加Activity到容器中
+    public void addActivity(Activity activity) {
+        if (activitys != null && activitys.size() > 0) {
+            if (!activitys.contains(activity)) {
+                activitys.add(activity);
+            }
+        } else {
+            activitys.add(activity);
+        }
+    }
+
+    // 遍历所有Activity并finish
+    public void exit() {
+        if (activitys != null && activitys.size() > 0) {
+            for (Activity activity : activitys) {
+                activity.finish();
+            }
+        }
+        System.exit(0);
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/PhaseCheckParse.java b/app/src/main/java/mobile/miki/PhaseCheckParse.java
new file mode 100644 (file)
index 0000000..1a775ee
--- /dev/null
@@ -0,0 +1,263 @@
+
+package mobile.miki;
+
+import android.os.SystemProperties;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/*Parse the phasecheck as the little endian*/
+public class PhaseCheckParse {
+    private static String TAG = "PhaseCheckParse";
+    private static int MAX_SN_LEN = 24;
+    private static int SP09_MAX_SN_LEN = MAX_SN_LEN;
+    private static int SP09_MAX_STATION_NUM = 15;
+    private static int SP09_MAX_STATION_NAME_LEN = 10;
+    private static int SP09_SPPH_MAGIC_NUMBER = 0x53503039;
+    private static int SP05_SPPH_MAGIC_NUMBER = 0x53503035;
+    private static int SP09_MAX_LAST_DESCRIPTION_LEN = 32;
+
+    private static int SN1_START_INDEX = 4;
+    private static int SN2_START_INDEX = SN1_START_INDEX + SP09_MAX_SN_LEN;
+
+    private static int STATION_START_INDEX = 56;
+    private static int TESTFLAG_START_INDEX = 252;
+    private static int RESULT_START_INDEX = 254;
+
+    private static String PHASE_CHECKE_FILE = "miscdata";
+
+    private byte[] stream = new byte[600];
+    private boolean mIsSP15 = false;
+    private static int SP15_MAX_SN_LEN = 64;
+    private static int SP15_MAX_STATION_NUM = 20;
+    private static int SP15_MAX_STATION_NAME_LEN = 15;
+    private static int SP15_SPPH_MAGIC_NUMBER = 0x53503135;
+    private static int SP15_MAX_LAST_DESCRIPTION_LEN = 32;
+
+    private static int SP15_SN1_START_INDEX = 4;
+    private static int SP15_SN2_START_INDEX = SP15_SN1_START_INDEX + SP15_MAX_SN_LEN;
+
+    private static int SP15_STATION_START_INDEX = 136;
+    private static int SP15_TESTFLAG_START_INDEX = 482;
+    private static int SP15_RESULT_START_INDEX = 486;
+
+    public PhaseCheckParse() {
+
+        FileInputStream in = null;
+        String filePath = SystemProperties.get("ro.product.partitionpath") + PHASE_CHECKE_FILE;
+        File fp = new File(filePath);
+        if (!fp.exists()) {
+            Log.d(TAG, filePath + "not exist!");
+            stream = null;
+            return;
+        }
+        Log.d(TAG, "PhaseCheckParse filePath="+filePath);
+        try {
+            in = new FileInputStream(fp);
+            if (in != null) {
+                in.read(stream, 0, stream.length);
+                Log.d(TAG, "read stream.length="+stream.length);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (in != null) {
+                    in.close();
+                    in = null;
+                }
+            } catch (IOException io) {
+                Log.e(TAG, "close in err");
+            }
+        }
+
+        if (!checkPhaseCheck()) {
+            stream = null;
+        }
+    }
+
+    private boolean checkPhaseCheck() {
+        Log.d(TAG, "checkPhaseCheck " + stream[0] + stream[1] + stream[2] + stream[3]);
+        if ((stream[0] == '9' || stream[0] == '5')
+                && stream[1] == '0'
+                && stream[2] == 'P'
+                && stream[3] == 'S') {
+               mIsSP15 = false;
+            return true;
+        }
+        /*SPRD bug :Support SP15*/
+        else if (stream[0] == '5'
+                && stream[1] == '1'
+                && stream[2] == 'P'
+                && stream[3] == 'S') {
+               mIsSP15 = true;
+            return true;
+        }
+
+        return false;
+    }
+
+    public String getSn1() {
+        if (stream == null) {
+            return "Invalid Sn1!";
+        }
+        if (!isAscii(stream[SN1_START_INDEX])) {
+            Log.d(TAG, "Invalid Sn1!");
+            return "Invalid Sn1!";
+        }
+
+        String sn1 = new String(stream, SN1_START_INDEX, SP09_MAX_SN_LEN);
+        if(mIsSP15){
+               sn1 = new String(stream, SP15_SN1_START_INDEX, SP15_MAX_SN_LEN);
+               Log.d(TAG, "mIsSP15 sn1:" + sn1);
+        }
+        Log.d(TAG, sn1);
+        return sn1;
+    }
+
+    public String getSn2() {
+        if (stream == null) {
+            return "Invalid Sn2!";
+        }
+        if (!isAscii(stream[SN2_START_INDEX])) {
+            Log.d(TAG, "Invalid Sn2!");
+            return "Invalid Sn2!";
+        }
+        String sn2 = new String(stream, SN2_START_INDEX, SP09_MAX_SN_LEN);
+        if(mIsSP15){
+               sn2 = new String(stream, SP15_SN2_START_INDEX, SP15_MAX_SN_LEN);
+               Log.d(TAG, "mIsSP15 sn2:" + sn2);
+        }
+        Log.d(TAG, sn2);
+        return sn2;
+    }
+
+    private static int RESERVED_START_INDEX = 206;
+    private static int RESERVED_LEN = 13;
+    public String getSn3() {
+        if (stream == null) {
+            return "Invalid Sn3!";
+        }
+        if (!isAscii(stream[RESERVED_START_INDEX])) {
+            Log.d(TAG, "Invalid Sn3!");
+            return "Invalid Sn3!";
+        }
+
+        String sn3 = new String(stream, RESERVED_START_INDEX, RESERVED_LEN);
+        Log.d(TAG, "getSn3 sn3="+sn3);
+        return sn3;
+    }
+
+    private boolean isAscii(byte b) {
+        if (b >= 0 && b <= 127) {
+            return true;
+        }
+        return false;
+    }
+
+    public String getTestsAndResult() {
+       if(mIsSP15){
+               String text = getTestsAndResultSP15();
+               Log.d(TAG, "getTestsAndResult mIsSP15="+mIsSP15);
+               Log.d(TAG, "getTestsAndResult text="+text);
+               return text;
+       }
+        if (stream == null) {
+            return "Invalid Phase check!";
+        }
+
+        if (!isAscii(stream[STATION_START_INDEX])) {
+            Log.d(TAG, "Invalid Phase check!");
+            return "Invalid Phase check!";
+        }
+        String testResult = null;
+        String allResult = "";
+
+        int flag = 1;
+        for (int i = 0; i < SP09_MAX_STATION_NUM; i++) {
+            if (0 == stream[STATION_START_INDEX + i * SP09_MAX_STATION_NAME_LEN]) {
+                Log.d(TAG, "break " + i);
+                break;
+            }
+            testResult = new String(stream, STATION_START_INDEX + i * SP09_MAX_STATION_NAME_LEN,
+                    SP09_MAX_STATION_NAME_LEN);
+            if (!isStationTest(i)) {
+                testResult += " Not test";
+            } else if (isStationPass(i)) {
+                testResult += " Pass";
+            } else {
+                testResult += " Failed";
+            }
+            flag = flag << 1;
+            Log.d(TAG, i + " " + testResult);
+            allResult += testResult + "\n";
+        }
+        return allResult;
+    }
+
+    public String getTestsAndResultSP15() {
+        if (stream == null) {
+            return "Invalid Phase check!";
+        }
+
+        if (!isAscii(stream[SP15_STATION_START_INDEX])) {
+            Log.d(TAG, "Invalid Phase check!");
+            return "Invalid Phase check!";
+        }
+        String testResult = null;
+        String allResult = "";
+
+        int flag = 1;
+        for (int i = 0; i < SP15_MAX_STATION_NUM; i++) {
+            if (0 == stream[SP15_STATION_START_INDEX + i * SP15_MAX_STATION_NAME_LEN]) {
+                Log.d(TAG, "break " + i);
+                break;
+            }
+            testResult = new String(stream, SP15_STATION_START_INDEX + i * SP15_MAX_STATION_NAME_LEN,
+                       SP15_MAX_STATION_NAME_LEN);
+            if (!isStationTestSP15(i)) {
+                testResult += " Not test";
+            } else if (isStationPassSP15(i)) {
+                testResult += " Pass";
+            } else {
+                testResult += " Failed";
+            }
+            flag = flag << 1;
+            Log.d(TAG, i + " " + testResult);
+            allResult += testResult + "\n";
+        }
+        return allResult;
+    }
+
+    private boolean isStationTestSP15(int station) {
+       int flag = 1;
+       return (0 == ((flag << station) & stream[SP15_TESTFLAG_START_INDEX]));
+    }
+
+    private boolean isStationPassSP15(int station) {
+       int flag = 1;
+       return (0 == ((flag << station) & stream[SP15_RESULT_START_INDEX]));
+    }
+
+    private boolean isStationTest(int station) {
+        byte flag = 1;
+        if (station < 8) {
+            return (0 == ((flag << station) & stream[TESTFLAG_START_INDEX]));
+        } else if (station >= 8 && station < 16) {
+            return (0 == ((flag << (station - 8)) & stream[TESTFLAG_START_INDEX + 1]));
+        }
+        return false;
+    }
+
+    private boolean isStationPass(int station) {
+        byte flag = 1;
+        if (station < 8) {
+            return (0 == ((flag << station) & stream[RESULT_START_INDEX]));
+        } else if (station >= 8 && station < 16) {
+            return (0 == ((flag << (station - 8)) & stream[RESULT_START_INDEX + 1]));
+        }
+        return false;
+    }
+}
diff --git a/app/src/main/java/mobile/miki/PictureRender.java b/app/src/main/java/mobile/miki/PictureRender.java
new file mode 100644 (file)
index 0000000..46119f9
--- /dev/null
@@ -0,0 +1,65 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.graphics.Bitmap;\r
+import android.graphics.BitmapFactory;\r
+import android.graphics.Canvas;\r
+import android.graphics.Paint;\r
+import android.graphics.PaintFlagsDrawFilter;\r
+\r
+class PictureRender {\r
+    private Bitmap bmCompass;\r
+    private Bitmap bmNeedle;\r
+    private Bitmap bmShadow;\r
+    private Context ctx;\r
+    PaintFlagsDrawFilter filterOff;\r
+    PaintFlagsDrawFilter filterOn;\r
+    private Paint mPaintBm;\r
+    \r
+    public PictureRender(Context paramContext, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {\r
+        ctx = paramContext;\r
+        bmNeedle = getBitmap(paramInt3);\r
+        bmCompass = getBitmap(paramInt2);\r
+        bmShadow = getBitmap(paramInt4);\r
+        mPaintBm = new Paint();\r
+        mPaintBm.setAntiAlias(true);\r
+        mPaintBm.setDither(true);\r
+        filterOn = new PaintFlagsDrawFilter(0x0, 0x2);\r
+        filterOff = new PaintFlagsDrawFilter(0x2, 0x0);\r
+    }\r
+    \r
+    public void draw(Canvas paramCanvas, float angle, int paramInt1, int paramInt2) {\r
+        paramCanvas.translate((float)paramInt1, (float)paramInt2);\r
+        if(bmCompass != null) {\r
+            float f5 = (float)(-bmCompass.getWidth() / 0x2);\r
+            float f6 = (float)(-bmCompass.getHeight() / 0x2);\r
+            paramCanvas.drawBitmap(bmCompass, f5, f6, mPaintBm);\r
+        }\r
+        paramCanvas.setDrawFilter(filterOn);\r
+        float f1 = (float)(-bmNeedle.getWidth() / 0x2);\r
+        float f2 = (float)(-bmNeedle.getHeight() / 0x2);\r
+        paramCanvas.rotate(-angle);\r
+        paramCanvas.drawBitmap(bmNeedle, f1, f2, mPaintBm);\r
+        paramCanvas.rotate(angle);\r
+        paramCanvas.setDrawFilter(filterOff);\r
+        if(bmShadow != null) {\r
+            float f3 = (float)(-bmShadow.getWidth() / 0x2);\r
+            float f4 = (float)(-bmShadow.getHeight() / 0x2);\r
+            paramCanvas.drawBitmap(bmShadow, f3, f4, mPaintBm);\r
+        }\r
+    }\r
+    \r
+    public Bitmap getBitmap(int paramInt) {\r
+        if(paramInt <= 0) {\r
+            return null;\r
+        }\r
+        Bitmap localBitmap = null;\r
+        localBitmap = BitmapFactory.decodeResource(ctx.getResources(), paramInt);\r
+        return localBitmap;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/RecordActivity.java b/app/src/main/java/mobile/miki/RecordActivity.java
new file mode 100644 (file)
index 0000000..432506c
--- /dev/null
@@ -0,0 +1,188 @@
+package mobile.miki;
+
+import android.content.Intent;
+import android.media.MediaPlayer;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.Environment;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import java.io.IOException;
+
+import mobile.miki.mainui.ButtonViewTwo;
+import mobile.miki.mainui.TestMainActivity;
+
+
+public class RecordActivity extends BaseActivity implements OnClickListener {
+        private static final String LOG_TAG = "AudioRecordTest";  
+           //语音文件保存路径  
+           private String FileName = null;  
+             
+           //界面控件  
+           private Button startRecord;   
+           private Button startPlay;  
+           private Button stopRecord;  
+           private Button stopPlay;  
+             
+           //语音操作对象  
+           private MediaPlayer mPlayer = null;  
+           private MediaRecorder mRecorder = null;  
+           
+           boolean running;
+               private ButtonViewTwo buttonView;
+           @Override  
+           public void onCreate(Bundle savedInstanceState) {  
+               super.onCreate(savedInstanceState);  
+               setContentView(R.layout.record_activity);
+                 
+               //开始录音  
+               startRecord = (Button)findViewById(R.id.startRecord);  
+               startRecord.setText(R.string.startRecord);  
+               //绑定监听器  
+               startRecord.setOnClickListener(new startRecordListener());  
+                 
+               //结束录音  
+               stopRecord = (Button)findViewById(R.id.stopRecord);  
+               stopRecord.setText(R.string.stopRecord);  
+               stopRecord.setOnClickListener(new stopRecordListener());  
+                 
+               //开始播放  
+               startPlay = (Button)findViewById(R.id.startPlay);  
+               startPlay.setText(R.string.startPlay);  
+               //绑定监听器  
+               startPlay.setOnClickListener(new startPlayListener());  
+                 
+               //结束播放  
+               stopPlay = (Button)findViewById(R.id.stopPlay);  
+               stopPlay.setText(R.string.stopPlay);  
+               stopPlay.setOnClickListener(new stopPlayListener());  
+                 
+               //设置sdcard的路径  
+               FileName = Environment.getExternalStorageDirectory().getAbsolutePath();  
+               FileName += "/audiorecordtest.3gp";  
+               
+               Intent intent = getIntent();
+                       running = false;
+                       if (intent != null) {
+                               running = intent.getBooleanExtra("running", false);;
+                       }
+                       buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);
+                       buttonView.btn_left.setOnClickListener(this);
+                       buttonView.btn_right.setOnClickListener(this);
+                       buttonView.btn_left.setClickable(false);
+           }  
+           
+           @Override
+               protected void onResume() {
+                       buttonView.setSuccessColor();
+                       buttonView.btn_left.setClickable(true);
+                       super.onResume();
+               }
+           //开始录音  
+           class startRecordListener implements OnClickListener{  
+         
+               @Override  
+               public void onClick(View v) {  
+                   // TODO Auto-generated method stub  
+                    mRecorder = new MediaRecorder();  
+                    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
+                    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
+                    mRecorder.setOutputFile(FileName);  
+                    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
+                    try {  
+                        mRecorder.prepare();  
+                        Toast.makeText(RecordActivity.this, RecordActivity.this.getResources().getString(R.string.speak_toast), Toast.LENGTH_LONG).show();
+                    } catch (IOException e) {  
+                        Log.e(LOG_TAG, "prepare() failed");  
+                    }  
+                    mRecorder.start();  
+               }  
+                 
+           }  
+           //停止录音  
+           class stopRecordListener implements OnClickListener{  
+         
+               @Override  
+               public void onClick(View v) {  
+                   // TODO Auto-generated method stub  
+                       if(mRecorder != null) {
+                                mRecorder.stop();  
+                            mRecorder.release();  
+                            mRecorder = null;  
+                            Toast.makeText(RecordActivity.this, RecordActivity.this.getResources().getString(R.string.stop_record_toast), Toast.LENGTH_LONG).show();
+                       }
+                    
+               }  
+                 
+           }  
+           //播放录音  
+           class startPlayListener implements OnClickListener{  
+         
+               @Override  
+               public void onClick(View v) {  
+                   // TODO Auto-generated method stub  
+                   mPlayer = new MediaPlayer();  
+                   try{  
+                       mPlayer.setDataSource(FileName);  
+                       mPlayer.prepare();  
+                       mPlayer.start();  
+                       Toast.makeText(RecordActivity.this, RecordActivity.this.getResources().getString(R.string.playing_toast), Toast.LENGTH_LONG).show();
+                   }catch(IOException e){  
+                       Log.e(LOG_TAG,"播放失败");  
+                   }  
+               }  
+                 
+           }  
+           //停止播放录音  
+           class stopPlayListener implements OnClickListener{  
+         
+               @Override  
+               public void onClick(View v) {  
+                   // TODO Auto-generated method stub  
+                       if(mPlayer != null) {
+                               mPlayer.release();  
+                           mPlayer = null;  
+                           Toast.makeText(RecordActivity.this, RecordActivity.this.getResources().getString(R.string.stop_playing_toast), Toast.LENGTH_LONG).show();
+                       }
+                  
+               }  
+                 
+           }
+               @Override
+               public void onClick(View arg0) {
+                       
+                       Intent intent = new Intent(this, TestMainActivity.class);
+                       intent.putExtra("running", true);
+                       Intent intent1 = new Intent(this, TestMainActivity.class);
+                       // TestResult testResult = (TestResult) getApplicationContext();
+                       switch (arg0.getId()) {
+
+                       case R.id.btn_two_left:
+                               if (!running) {
+                                       startActivity(intent1);
+                               } else {
+                                       startActivity(intent);
+                               }
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("record", "true")
+                                               .commit();
+                               finish();
+                               break;
+                       case R.id.btn_two_right:
+                               if (!running) {
+                                       startActivity(intent1);
+                               } else {
+                                       startActivity(intent);
+                               }
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("record", "false")
+                                               .commit();
+                               finish();
+                               break;
+                       }
+                       
+               }  
+}
diff --git a/app/src/main/java/mobile/miki/RingtoneActivity.java b/app/src/main/java/mobile/miki/RingtoneActivity.java
new file mode 100644 (file)
index 0000000..ec84d9c
--- /dev/null
@@ -0,0 +1,355 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.media.AudioManager;\r
+import android.media.MediaPlayer;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.widget.Button;\r
+\r
+import java.io.IOException;\r
+\r
+import mobile.miki.ageingmode.AgeingModeActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+import mobile.miki.util.Logger;\r
+\r
+public class RingtoneActivity extends BaseActivity implements\r
+               MediaPlayer.OnCompletionListener, android.view.View.OnClickListener/*, SeekBar.OnSeekBarChangeListener*/ {\r
+       private boolean isPlaying;\r
+       private MediaPlayer mediaPlayer;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+       boolean isEgeingMode = false;\r
+       private Button mShowVolum;\r
+\r
+       private int i = 0;\r
+       private int TIME = 1000 * 6;\r
+       private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private boolean isFirstStartService = true;\r
+       private boolean isShowSeekbar = true;\r
+       public static RingtoneActivity instance = null;\r
+//     private SeekBar seekBar;\r
+       int maxVolume;\r
+       AudioManager audioManager;\r
+\r
+       public RingtoneActivity() {\r
+               isPlaying = false;\r
+       }\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               setContentView(R.layout.ringtone_test_layout);\r
+               instance = this;\r
+               getRingIntent();\r
+               ageingMode();\r
+\r
+               mShowVolum = (Button) findViewById(R.id.bt_showvolum);\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               onRingtoneBtnClicked(null);\r
+               /*seekBar = (SeekBar) findViewById(R.id.seekbar);\r
+               if (!FTUtils.isSugar()) {\r
+                       seekBar.setVisibility(View.GONE);\r
+               }\r
+               seekBar.setOnSeekBarChangeListener(this);*/\r
+               audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);\r
+               maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);\r
+\r
+               Logger.d("maxVolume " + maxVolume);\r
+               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,maxVolume\r
+                               , AudioManager.FLAG_SHOW_UI);\r
+//             seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));\r
+               mShowVolum.setOnClickListener(new OnClickListener() {\r
+                       @Override\r
+                       public void onClick(View arg0) {\r
+                               int currentVolume = audioManager\r
+                                               .getStreamVolume(AudioManager.STREAM_MUSIC);\r
+                               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,\r
+                                               currentVolume, AudioManager.FLAG_SHOW_UI);\r
+                       }\r
+               });\r
+       }\r
+\r
+       private void getRingIntent() {\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                               pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent\r
+                                               .getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+               \r
+               if (intent != null) {\r
+                       try {\r
+                               isFirstStartService = intent.getBooleanExtra("first_start_service", false);\r
+                       } catch (Exception e) {\r
+                               // TODO: handle exception\r
+                       }\r
+               }\r
+       }\r
+\r
+       @Override\r
+       protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+               if (resultCode == Constants.AGING_MODE_SETRESULT) {\r
+\r
+               }\r
+               super.onActivityResult(requestCode, resultCode, data);\r
+       }\r
+\r
+       /**\r
+        * 处理老化模式下的状态\r
+        */\r
+       private void ageingMode() {\r
+               if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1 && WORK_TIME != -1) {\r
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+                       handler.postDelayed(runnable, TIME);\r
+                       sendBraodCaseReceiver();\r
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+                       handler.postDelayed(runnable, TIME);\r
+                       /*if(isFirstStartService && WORK_TIME != -1) {\r
+                               Intent serviceIntent = new Intent(this, AgeingService.class);\r
+                               serviceIntent.putExtra("work_time", WORK_TIME);\r
+                               serviceIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                               startService(serviceIntent);\r
+                       }*/\r
+                       isShowSeekbar = isFirstStartService;\r
+                       registerReceiver(); //注册广播\r
+               } else {\r
+                       sendBraodCaseReceiver();\r
+               }\r
+       }\r
+       \r
+       private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+        intent.setAction("com.android.stopTiming");\r
+        sendBroadcast(intent);\r
+    }\r
+\r
+       private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopActivity");\r
+               RingtoneActivity.this.registerReceiver(receiver, filter);\r
+       }\r
+\r
+       protected void onDestroy() {\r
+               if (mediaPlayer != null) {\r
+                       mediaPlayer.release();\r
+               }\r
+\r
+               if (handler != null && runnable != null) {\r
+                       handler.removeCallbacks(runnable);\r
+               }\r
+               if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+               super.onDestroy();\r
+       }\r
+\r
+\r
+       public void onRingtoneBtnClicked(View view) {\r
+               String model = Build.MODEL;\r
+               if (isPlaying) {\r
+                       return;\r
+               }\r
+               if (model != null\r
+                               && (model.contains("WG1702") || model.contains("PD88-18"))\r
+                               || (model.contains("SCX-N18-18") || model.contains("PD88-8"))) {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei);\r
+               } else if (model.contains("C02A") || model.contains("C02")) {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.liebao);\r
+               } else {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei);\r
+               }\r
+\r
+               if (mediaPlayer != null) {\r
+                       mediaPlayer.stop();\r
+               }\r
+               try {\r
+                       mediaPlayer.setOnCompletionListener(this);\r
+                       mediaPlayer.setLooping(true);\r
+                       mediaPlayer.prepare();\r
+                       mediaPlayer.start();\r
+                       isPlaying = true;\r
+                       return;\r
+               } catch (IllegalStateException e) {\r
+                       return;\r
+               } catch (IOException e) {\r
+               }\r
+       }\r
+\r
+       public void onCompletion(MediaPlayer mp) {\r
+               isPlaying = false;\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent;\r
+               //传奇不需要mic\r
+               String model = Build.MODEL;\r
+               if(model != null && model.contains("F6")) {\r
+                       intent = new Intent(this, SimDetectActivity.class);\r
+               } else {\r
+                       intent = new Intent(this, MikeTest.class);\r
+               }\r
+               \r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       // 如果当前是老化模式测试\r
+                       if (isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this, AgeingModeActivity.class);\r
+                               ageingIntent.putExtra("ageing_mode", true);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("ageing_speak", "true").commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("speak", "true").commit();\r
+                       }\r
+\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this, AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("ageing_speak", "false").commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("speak", "false").commit();\r
+                       }\r
+\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       protected void onResume() {\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               super.onResume();\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+       Handler handler = new Handler();\r
+       Runnable runnable = new Runnable() {\r
+\r
+               @Override\r
+               public void run() {\r
+                       // handler自带方法实现定时器\r
+                       try {\r
+                               // handler.postDelayed(this, TIME);\r
+                               System.out.println("do...");\r
+                               if (SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                                       Intent ageingIntent = new Intent(RingtoneActivity.this,\r
+                                                       LCDtestAgeing.class);\r
+                                       ageingIntent.putExtra("ageing_mode", true);\r
+                                       ageingIntent.putExtra("singleitem_or_cycle_mode",\r
+                                                       SINGLEITEM_OR_CYCLE_MODE);\r
+                                       ageingIntent.putExtra("work_time", WORK_TIME);\r
+                                       ageingIntent.putExtra("show_seekbar", isShowSeekbar);\r
+                                       startActivity(ageingIntent);\r
+                               }\r
+                               finish();\r
+\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               System.out.println("exception...");\r
+                       }\r
+               }\r
+       };\r
+\r
+       /*@Override\r
+       public void onProgressChanged(SeekBar seekBar, int i, boolean b) {\r
+               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);\r
+       }\r
+\r
+       @Override\r
+       public void onStartTrackingTouch(SeekBar seekBar) {\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onStopTrackingTouch(SeekBar seekBar) {\r
+\r
+       }\r
+*/\r
+       /**\r
+        * 获取广播数据\r
+        * \r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       RingtoneActivity.this.finish();\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/SimDetectActivity.java b/app/src/main/java/mobile/miki/SimDetectActivity.java
new file mode 100644 (file)
index 0000000..3136892
--- /dev/null
@@ -0,0 +1,278 @@
+package mobile.miki;\r
+\r
+import android.app.Service;\r
+import android.content.ComponentName;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.telephony.TelephonyManager;\r
+import android.util.Log;\r
+import android.view.Display;\r
+import android.view.View;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import java.io.IOException;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class SimDetectActivity extends BaseActivity implements\r
+               android.view.View.OnClickListener {\r
+       private static String imsiSim0;\r
+       private static String imsiSim1;\r
+       private static String aaa;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+\r
+       String result = null;\r
+       private PingThread pingThread;\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               setContentView(R.layout.sim_detect_layout);\r
+               imsiSim0 = getResources().getString(R.string.nothing);\r
+               imsiSim1 = getResources().getString(R.string.nothing);\r
+               aaa = getResources().getString(R.string.ok);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest =false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+                       pcbatest =  intent.getBooleanExtra("pcbatest",false);\r
+               }\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               initSimCarInfo();\r
+               // ((TextView)findViewById(R.id.tvSim0)).setText(imsiSim0);\r
+               // ((TextView)findViewById(R.id.tvSim1)).setText(imsiSim1);\r
+               Log.e("dou", "imsiSim0:" + imsiSim0);\r
+               Log.e("dou", "imsiSim1:" + imsiSim1);\r
+               detectSim1(null);\r
+//             detectSim2(null);\r
+               detectNetwork(null);\r
+       }\r
+\r
+       @Override\r
+       protected void onResume() {\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               super.onResume();\r
+       }\r
+\r
+       boolean simPass = false, networkPass = false;\r
+\r
+       public void detectSim1(View view) {\r
+               if (null == imsiSim0) {\r
+                       ((TextView) findViewById(R.id.tvSim0)).setText(R.string.nothing);\r
+               } else {\r
+                       simPass = true;\r
+                       if(running) {\r
+                               pass();\r
+                       }\r
+                       \r
+                       ((TextView) findViewById(R.id.tvSim0)).setText(imsiSim0);\r
+               }\r
+\r
+       }\r
+\r
+       public void detectSim2(View view) {\r
+               ((TextView) findViewById(R.id.tvSim1)).setText(imsiSim1);\r
+       }\r
+\r
+       public void detectNetwork(View view) {\r
+               ((TextView) findViewById(R.id.network)).setText(getResources().getString(\r
+                               R.string.getInfo));\r
+               if (pingThread == null) {\r
+                       pingThread = new PingThread();\r
+                       pingThread.start();\r
+               }\r
+       }\r
+\r
+       public void intentToVoicePhone(View view) {\r
+               Intent intent = new Intent();\r
+               intent.setComponent(new ComponentName("com.coagent.voip",\r
+                               "com.coagent.voip.VOIPFragmentActivity"));\r
+               startActivity(intent);\r
+       }\r
+\r
+       private void initSimCarInfo() {\r
+\r
+               TelephonyManager telephonyManager = (TelephonyManager) this\r
+                               .getSystemService(Context.TELEPHONY_SERVICE);\r
+               TelephonyManager tm = (TelephonyManager) this\r
+                               .getSystemService(Service.TELEPHONY_SERVICE);\r
+               int state = tm.getSimState();\r
+               if (TelephonyManager.SIM_STATE_READY == state) {\r
+                       imsiSim0 = getResources().getString(R.string.sim_hasRead);\r
+               }\r
+       }\r
+\r
+       // dou\r
+       // 判断手机是否能正常上网 进行ping操作, 即使判断手机连接了wifi了(热点没有上网),手机还是不能上网\r
+\r
+       Handler handler = new Handler(new Handler.Callback() {\r
+               @Override\r
+               public boolean handleMessage(Message message) {\r
+                       Log.i("dou", "handleMessage");\r
+                       if (result != null && "successful".equals(result)) {\r
+                               ((TextView) findViewById(R.id.network))\r
+                                               .setText(getResources().getString(\r
+                                                               R.string.battery_info_health_good));\r
+                               networkPass = true;\r
+                               if(running) {\r
+                                       pass();\r
+                               }\r
+                               isRunning = false;\r
+                               return false;\r
+                       }\r
+                       if (count == 5) {\r
+                               isRunning = false;\r
+                               ((TextView) findViewById(R.id.network))\r
+                                               .setText(getResources().getString(\r
+                                                               R.string.nothing));\r
+                       }\r
+                       return false;\r
+               }\r
+       });\r
+\r
+\r
+       private boolean isRunning = true;\r
+       private int count = 0;\r
+       class PingThread extends Thread {\r
+               @Override\r
+               public void run() {\r
+\r
+                       while (isRunning) {\r
+                               Log.e("dou", "isRunning~~~~~~~~~");\r
+                               Log.i("dou", "count " + count);\r
+                               count++;\r
+                               ping();\r
+                               Message msg = new Message();\r
+                               handler.sendMessage(msg);\r
+                               try {\r
+                                       Thread.sleep(1000);\r
+                               } catch (InterruptedException e) {\r
+                                       // TODO Auto-generated catch block\r
+                                       e.printStackTrace();\r
+                               }\r
+\r
+                       }\r
+\r
+                       super.run();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       protected void onDestroy() {\r
+               if (pingThread != null) {\r
+                       pingThread = null;\r
+               }\r
+               if (handler != null) {\r
+                       handler.removeCallbacksAndMessages(null);\r
+               }\r
+               super.onDestroy();\r
+       }\r
+\r
+       private boolean ping() {\r
+               try {\r
+                       String ip = "www.baidu.com";// 除非百度挂了,否则用这个应该没问题~\r
+                       Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping3次\r
+                       // PING的状态\r
+                       int status = p.waitFor();\r
+                       if (status == 0) {\r
+                               result = "successful";\r
+                               return true;\r
+                       } else {\r
+                               result = "failed~ cannot reach the IP address";\r
+                       }\r
+               } catch (IOException e) {\r
+                       result = "failed~ IOException";\r
+               } catch (InterruptedException e) {\r
+                       result = "failed~ InterruptedException";\r
+               } finally {\r
+                       Log.i("dou", "result = " + result);\r
+               }\r
+\r
+               return false;\r
+       }\r
+\r
+       // end\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, DialerTestActivity.class);\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("sim", "true").commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("sim", "false").commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+       private void pass() {\r
+               if (simPass == true && networkPass == true) {\r
+                       buttonView.setSuccessColor();\r
+                       Toast.makeText(SimDetectActivity.this, "SIM卡测试通过!",\r
+                                       Toast.LENGTH_SHORT).show();\r
+                       Display myDisplay = getWindowManager().getDefaultDisplay();\r
+\r
+                       Intent intent = new Intent(this, DialerTestActivity.class);\r
+                       intent.putExtra("running", true);\r
+                       intent.putExtra("pcbatest", pcbatest);\r
+                       startActivity(intent);\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("sim", "true").commit();\r
+                       finish();\r
+               } else {\r
+                       buttonView.btn_left.setClickable(true);\r
+               }\r
+\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/SystemMemory.java b/app/src/main/java/mobile/miki/SystemMemory.java
new file mode 100644 (file)
index 0000000..15af500
--- /dev/null
@@ -0,0 +1,169 @@
+package mobile.miki;\r
+\r
+import android.content.Intent;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Environment;\r
+import android.os.StatFs;\r
+import android.preference.PreferenceManager;\r
+import android.text.format.Formatter;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.widget.TextView;\r
+\r
+import java.io.File;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class SystemMemory extends BaseActivity implements OnClickListener{\r
+\r
+       private TextView total_textview2;\r
+       private TextView avail_textview2;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+       long totalMemory_byte = 0;\r
+       long MEMORY_2G = 2147483648l;\r
+       long MEMORY_4G = 4294967296l;\r
+\r
+       @Override\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setContentView(R.layout.systemmemory_test_layout);\r
+               total_textview2 = (TextView) findViewById(R.id.total_textview2);\r
+               avail_textview2 = (TextView) findViewById(R.id.avail_textview2);\r
+\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest =false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+                       pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+               }\r
+\r
+                // 获得手机内部存储控件的状态\r
+        File dataFileDir = Environment.getDataDirectory();\r
+        String total = getTotal(dataFileDir);\r
+        String avail = getAvail(dataFileDir);\r
+\r
+        if (FTUtils.isSugar() || totalMemory_byte >= MEMORY_2G && totalMemory_byte <= MEMORY_4G) {\r
+                       total_textview2.setText("4G");\r
+                       findViewById(R.id.avail_textview1).setVisibility(View.GONE);\r
+                       return;\r
+               }\r
+        total_textview2.setText(total);\r
+        avail_textview2.setText(avail);\r
+\r
+       }\r
+\r
+\r
+\r
+       private String getAvail(File path) {\r
+        // 获得一个磁盘状态对象  \r
+        StatFs stat = new StatFs(path.getPath());\r
+\r
+        long blockSize = stat.getBlockSize();   // 获得一个扇区的大小\r
+        long totalBytes = stat.getTotalBytes();\r
+\r
+        long totalBlocks = stat.getBlockCount();    // 获得扇区的总数  \r
+\r
+        long availableBlocks = stat.getAvailableBlocks();   // 获得可用的扇区数量  \r
+        // 总空间\r
+        String totalMemory =  Formatter.formatFileSize(this, totalBlocks * blockSize);\r
+        // 可用空间  \r
+        String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize);\r
+\r
+        return availableMemory;\r
+    }\r
+\r
+\r
+       private String getTotal(File path) {\r
+        // 获得一个磁盘状态对象  \r
+        StatFs stat = new StatFs(path.getPath());\r
+\r
+        long blockSize = stat.getBlockSize();   // 获得一个扇区的大小  \r
+\r
+        long totalBlocks = stat.getBlockCount();    // 获得扇区的总数  \r
+\r
+        long availableBlocks = stat.getAvailableBlocks();   // 获得可用的扇区数量  \r
+\r
+        // 总空间  \r
+        String totalMemory =  Formatter.formatFileSize(this, totalBlocks * blockSize);\r
+               totalMemory_byte = totalBlocks * blockSize;\r
+        Log.i("dxc", "total kb " + totalMemory_byte);\r
+        // 可用空间  \r
+        String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize);\r
+\r
+        return  totalMemory;\r
+    }\r
+\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = null;\r
+               //正指向添加录音测试\r
+               String model = Build.MODEL;\r
+               if(model != null && (model.contains("WG1702") || model.contains("PD88-18")) || (model.contains("SCX-N18-18") || model.contains("PD88-8") || model.contains("F6"))) {\r
+                       intent = new Intent(this, RecordActivity.class);\r
+               } else if (FTUtils.isSugar() || FTUtils.isLieBao() || FTUtils.isS06()) {\r
+                       intent = new Intent(this, KeysTestActivity.class);\r
+               } else if (FTUtils.isS06()){\r
+                       // s06\r
+                       intent = new Intent(this, DSPActivity.class);\r
+               } else {\r
+                       intent = new Intent(this, TestMainActivity.class);\r
+               }\r
+\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else if (FTUtils.isS06()) {\r
+                               startActivity(intent);\r
+                       } else {\r
+                               // 自动化测试最后一项直接回到主界面\r
+                               startActivity(intent1);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("watchmemory", "true").commit();\r
+\r
+                       finish();\r
+\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else if (FTUtils.isS06()) {\r
+                               startActivity(intent);\r
+                       } else {\r
+                               startActivity(intent1);\r
+                       }\r
+                       PreferenceManager\r
+                                       .getDefaultSharedPreferences(getApplicationContext())\r
+                                       .edit().putString("watchmemory", "false").commit();\r
+                       finish();\r
+\r
+                       break;\r
+               }\r
+\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/TouchScreen_Activity.java b/app/src/main/java/mobile/miki/TouchScreen_Activity.java
new file mode 100644 (file)
index 0000000..a566c97
--- /dev/null
@@ -0,0 +1,5 @@
+package mobile.miki;\r
+\r
+public class TouchScreen_Activity {\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/TouchTest.java b/app/src/main/java/mobile/miki/TouchTest.java
new file mode 100644 (file)
index 0000000..93d313c
--- /dev/null
@@ -0,0 +1,264 @@
+package mobile.miki;\r
+\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.graphics.Bitmap;\r
+import android.graphics.Canvas;\r
+import android.graphics.Color;\r
+import android.graphics.Paint;\r
+import android.graphics.Paint.Style;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.Display;\r
+import android.view.MotionEvent;\r
+import android.view.View;\r
+import android.view.Window;\r
+import android.view.WindowManager;\r
+import android.widget.Toast;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+\r
+import mobile.miki.lcd.LcdActivity;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+//import sim.android.mtkcit.TestActivity;\r
+//import sim.android.mtkcit.cittools.CITTools;\r
+\r
+\r
+public class TouchTest extends BaseActivity {\r
+       private static final String TAG = "TouchpanelTest";\r
+       private static final boolean mDebug = false;\r
+       private TPTestView tpView;\r
+       private ArrayList<Rect> rectList;\r
+       private static final int numX = 4;\r
+       private static final int numY = 7;\r
+       private int mDisplayWidth = 320;\r
+       private int mDisplayHeight = 320;\r
+       private int absX;\r
+       private int absY;\r
+       boolean running;\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               if (mDebug)\r
+                       Log.v(TAG, "start TouchpanelTest");\r
+               getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);\r
+               requestWindowFeature(Window.FEATURE_NO_TITLE);\r
+               // 发送广播给systemUI全屏显示\r
+               Intent systemuiIntent = new Intent();\r
+               systemuiIntent.setAction("mobile.miki.touchscreen.TouchScreen_Activity");\r
+               systemuiIntent.putExtra("close", true);\r
+               sendBroadcast(systemuiIntent);\r
+               // end\r
+               initRec();\r
+               Toast.makeText(this, /*"请进行触摸屏测试"*/this.getResources().getString(R.string.touchtest_toast), Toast.LENGTH_LONG).show();\r
+               tpView = new TPTestView(this);\r
+               setContentView(tpView);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+               }\r
+\r
+       }\r
+\r
+       private void initRec() {\r
+\r
+               Display myDisplay = getWindowManager().getDefaultDisplay();\r
+               mDisplayHeight = myDisplay.getHeight();\r
+               mDisplayHeight = mDisplayHeight;\r
+               \r
+\r
+               absY = mDisplayHeight / numY;\r
+                mDisplayWidth = myDisplay.getWidth();\r
+               // mDisplayWidth = 859;\r
+               \r
+//             if(myDisplay.getWidth()==730){\r
+//                     mDisplayWidth = 855;\r
+//             }else{\r
+//                     mDisplayWidth = 1280;\r
+//             }\r
+               \r
+               \r
+               absX = mDisplayWidth / numX;\r
+               rectList = new ArrayList<TouchTest.Rect>(numX * numY);\r
+               for (int i = 0; i < numX; i++) {\r
+                       for (int j = 0; j < numY; j += (numY - 1) / 2) {\r
+                               Rect r = new Rect(i * absX, j * absY, absX, absY);\r
+\r
+                               rectList.add(r);\r
+                       }\r
+               }\r
+\r
+               for (int i = 0; i < numX; i += (numX - 1) / 2) {\r
+                       for (int j = 1; j < numY - 1; j++) {\r
+                               if (j == (numY - 1) / 2)\r
+                                       continue;\r
+\r
+                               Rect r = new Rect(i * absX, j * absY, absX, absY);\r
+\r
+                               rectList.add(r);\r
+                       }\r
+               }\r
+\r
+               \r
+//             for (int i = 0; i < 2; i++) {\r
+//                     for (int j = 0; j < 2; j++) {\r
+//                             Rect r = new Rect(absX + i * absX * (numX - 1) / 2, absY + j * absY * (numY - 1) / 2,\r
+//                                             (numX - 3) / 2 * absX, (numY - 3) / 2 * absY);\r
+//\r
+//                             rectList.add(r);\r
+//\r
+//                     }\r
+//             }\r
+       }\r
+\r
+       private void doAfterTest() {\r
+               // Bundle b = new Bundle();\r
+               // Intent intent = new Intent();\r
+               // b.putInt("test_result", 1);\r
+               //\r
+               // intent.putExtras(b);\r
+               // setResult(RESULT_OK, intent);\r
+\r
+//             // 发送广播给systemUI显示bar\r
+//             Intent systemuiIntent = new Intent();\r
+//             systemuiIntent.setAction("mobile.miki.touchscreen.TouchTest");\r
+//             systemuiIntent.putExtra("open", true);\r
+//             sendBroadcast(systemuiIntent);\r
+\r
+               Intent intent2 = new Intent(this, LcdActivity.class);\r
+               intent2.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+\r
+               if (!running) {\r
+                       startActivity(intent1);\r
+               } else {\r
+                       startActivity(intent2);\r
+               }\r
+               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("touch", "true")\r
+                               .commit();\r
+\r
+               finish();\r
+\r
+       }\r
+\r
+       private class Rect {\r
+               int x;\r
+               int y;\r
+               int dx;\r
+               int dy;\r
+\r
+               Rect(int x, int y, int dx, int dy) {\r
+                       this.x = x;\r
+                       this.y = y;\r
+                       this.dx = dx;\r
+                       this.dy = dy;\r
+               }\r
+\r
+               public boolean isInRect(int x, int y) {\r
+                       if (x >= this.x && x <= this.x + this.dx && y >= this.y && y <= this.y + this.dy) {\r
+                               return true;\r
+                       } else {\r
+                               return false;\r
+                       }\r
+               }\r
+       }\r
+\r
+       private class TPTestView extends View {\r
+               private Bitmap bitmap;\r
+               private Canvas canvas;\r
+               private Paint paint;\r
+               private Rect tempRect;\r
+\r
+               public TPTestView(Context context) {\r
+                       super(context);\r
+                       paint = new Paint(Paint.DITHER_FLAG);\r
+                       bitmap = Bitmap.createBitmap(mDisplayWidth, mDisplayHeight, Bitmap.Config.ARGB_8888);\r
+                       canvas = new Canvas();\r
+                       canvas.setBitmap(bitmap);\r
+\r
+                       paint.setStyle(Style.FILL);\r
+                       paint.setStrokeWidth(5);\r
+                       paint.setColor(Color.WHITE);\r
+                       paint.setAntiAlias(true);\r
+\r
+                       Iterator<Rect> iterator = rectList.iterator();\r
+                       while (iterator.hasNext()) {\r
+                               Rect rect = iterator.next();\r
+                               canvas.drawRect(rect.x, rect.y, rect.x + rect.dx - 1, rect.y + rect.dy - 1, paint);\r
+                       }\r
+                       invalidate();\r
+\r
+                       paint.setColor(Color.GREEN);\r
+\r
+               }\r
+\r
+               protected void onDraw(Canvas canvas) {\r
+                       canvas.drawBitmap(bitmap, 0, 0, null);\r
+               }\r
+\r
+               public boolean onTouchEvent(MotionEvent event) {\r
+                       int action = event.getAction();\r
+                       float x = event.getX();\r
+                       float y = event.getY();\r
+                       if (mDebug)\r
+                               Log.v(TAG, "onTouchEvent" + " x=" + x + " y=" + y);\r
+\r
+                       if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE) {\r
+                               if (rectList.size() == 0) {\r
+                                       doAfterTest();\r
+                               }\r
+                               boolean bNeedFindRect = false;\r
+                               if (tempRect == null) {\r
+                                       bNeedFindRect = true;\r
+                               } else {\r
+                                       if (!tempRect.isInRect((int) x, (int) y)) {\r
+                                               bNeedFindRect = true;\r
+                                       } else {\r
+                                               bNeedFindRect = false;\r
+                                       }\r
+\r
+                               }\r
+                               if (mDebug)\r
+                                       Log.v(TAG, "onTouchEvent" + " bNeedFindRect=" + bNeedFindRect);\r
+                               if (bNeedFindRect) {\r
+                                       Iterator<Rect> iterator = rectList.iterator();\r
+                                       while (iterator.hasNext()) {\r
+                                               Rect rect = iterator.next();\r
+                                               if (rect.isInRect((int) x, (int) y)) {\r
+                                                       tempRect = rect;\r
+                                                       canvas.drawRect(rect.x, rect.y, rect.x + rect.dx, rect.y + rect.dy, paint);\r
+                                                       invalidate();\r
+                                                       rectList.remove(rect);\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+                       return true;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("touch", "false")\r
+                               .commit();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               //      doAfterTest();\r
+               } else {\r
+                       finish();\r
+               }\r
+\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/UltravioletMonitorActivity.java b/app/src/main/java/mobile/miki/UltravioletMonitorActivity.java
new file mode 100644 (file)
index 0000000..1e90687
--- /dev/null
@@ -0,0 +1,151 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.Intent;\r
+import android.hardware.Sensor;\r
+import android.hardware.SensorEvent;\r
+import android.hardware.SensorEventListener;\r
+import android.hardware.SensorManager;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.LinearLayout;\r
+import android.widget.TextView;\r
+\r
+import java.util.List;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+/**\r
+ * 紫外线检测\r
+ */\r
+public class UltravioletMonitorActivity extends BaseActivity\r
+        implements SensorEventListener, View.OnClickListener {\r
+    private SensorManager sensorManager;\r
+    String s1;\r
+    TextView t1;\r
+    private ButtonViewTwo buttonView;\r
+    boolean running;\r
+\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        MyApplication.getInstance().addActivity(this);\r
+        s1 = getString(R.string.ins_gsensor_toast);\r
+        setContentView(R.layout.gravity_sensor_layout);\r
+        Intent intent = getIntent();\r
+        running = false;\r
+        if (intent != null) {\r
+            running = intent.getBooleanExtra("running", false);\r
+        }\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.btn_left.setClickable(false);\r
+\r
+        LinearLayout sensor_direction = (LinearLayout) findViewById(R.id.sensor_direction);\r
+        sensor_direction.setVisibility(View.GONE);\r
+        t1 = (TextView) findViewById(R.id.ins);\r
+        t1.setText(R.string.getInfo);\r
+        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);\r
+        sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), 0x0);\r
+        List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);\r
+        for (Sensor sensor : sensors) {\r
+            Log.i("dxc", "sensor:[name=" + sensor.getName()\r
+                    + ";type=" + sensor.getType()\r
+                    + ";vendor=" + sensor.getVendor() + "]");\r
+        }\r
+        handler.sendEmptyMessageDelayed(0, 500);\r
+        myHandler.sendEmptyMessageDelayed(1, 1000 * 60 * 2);\r
+    }\r
+\r
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {\r
+    }\r
+\r
+    public void onSensorChanged(SensorEvent event) {\r
+        if(event.values[0] > 0) {\r
+            t1.setText(R.string.pass_test);\r
+            buttonView.setSuccessColor();\r
+            buttonView.btn_left.setClickable(true);\r
+            if (running) {\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Ultraviolet", "true")\r
+                        .commit();\r
+                Intent intent = new Intent(this, TestMainActivity.class);\r
+                intent.putExtra("running", true);\r
+                startActivity(intent);\r
+            }\r
+            Log.i("dxc", "onSensorChanged " + (int) event.values[0]);\r
+            sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT));\r
+        }\r
+    }\r
+\r
+    protected void onDestroy() {\r
+        sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT));\r
+        sensorManager = null;\r
+        super.onDestroy();\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onClick(View arg0) {\r
+        Intent intent = new Intent(this, TestMainActivity.class);\r
+        intent.putExtra("running", true);\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        // TestResult testResult = (TestResult) getApplicationContext();\r
+        switch (arg0.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Ultraviolet", "true")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Ultraviolet", "false")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+        }\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onBackPressed() {\r
+        // super.onBackPressed();\r
+        if (running) {\r
+            Intent intent = new Intent(this, TestMainList.class);\r
+            startActivity(intent);\r
+            finish();\r
+        } else {\r
+            finish();\r
+        }\r
+    }\r
+\r
+    private Handler myHandler = new Handler(new Handler.Callback() {\r
+        @Override\r
+        public boolean handleMessage(Message message) {\r
+            if (message.what == 1) {\r
+                t1.setText(R.string.fail_test);\r
+            }\r
+\r
+            return false;\r
+        }\r
+    });\r
+}\r
diff --git a/app/src/main/java/mobile/miki/VUMeter.java b/app/src/main/java/mobile/miki/VUMeter.java
new file mode 100644 (file)
index 0000000..30601d2
--- /dev/null
@@ -0,0 +1,91 @@
+package mobile.miki;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+//import sim.android.mtkcit.R;
+
+public class VUMeter extends View {
+    static final float PIVOT_RADIUS = 3.5f;
+    static final float PIVOT_Y_OFFSET = 10f;
+    static final float SHADOW_OFFSET = 2.0f;
+    static final float DROPOFF_STEP = 0.18f;
+    static final float SURGE_STEP = 0.35f;
+    static final long  ANIMATION_INTERVAL = 70;
+    int volume = 0;
+    Paint mPaint, mShadow;
+    float mCurrentAngle;
+    
+    public VUMeter(Context context) {
+        super(context);
+        init(context);
+    }
+
+    public VUMeter(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context);
+    }
+
+    void init(Context context) {
+        Drawable background = context.getResources().getDrawable(R.drawable.vumeter);
+        setBackgroundDrawable(background);
+        
+        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPaint.setColor(Color.RED);
+        mShadow = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mShadow.setColor(Color.argb(60, 0, 0, 0));
+              
+        mCurrentAngle = 0;
+    }
+
+    public void setVolume(int vol) {
+               volume = vol;
+       invalidate();
+    }
+    
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+
+       // final float minAngle = (float)Math.PI/12;
+       // final float maxAngle = (float)Math.PI*11/12;
+        final float minAngle = (float)Math.PI/8;
+        final float maxAngle = (float)Math.PI*7/8;
+        float angle = minAngle;
+        if (true)
+        {
+            angle += (float)(maxAngle - minAngle)*volume/4000;
+        }else
+        {
+            angle = minAngle;
+        }
+
+        if (angle > mCurrentAngle)
+            mCurrentAngle = angle;
+        else
+            mCurrentAngle = Math.max(angle, mCurrentAngle - DROPOFF_STEP);
+
+        mCurrentAngle = Math.min(maxAngle, mCurrentAngle);
+
+        float w = getWidth();
+        float h = getHeight();
+        float pivotX = w/2;
+        float pivotY = h - PIVOT_RADIUS - PIVOT_Y_OFFSET;
+        float l = h*4/5;
+        float sin = (float) Math.sin(mCurrentAngle);
+        float cos = (float) Math.cos(mCurrentAngle);
+        float x0 = pivotX - l*cos;
+        float y0 = pivotY - l*sin;
+        canvas.drawLine(x0 + SHADOW_OFFSET, y0 + SHADOW_OFFSET, pivotX + SHADOW_OFFSET, pivotY + SHADOW_OFFSET, mShadow);
+        canvas.drawCircle(pivotX + SHADOW_OFFSET, pivotY + SHADOW_OFFSET, PIVOT_RADIUS, mShadow);
+        canvas.drawLine(x0, y0, pivotX, pivotY, mPaint);
+        canvas.drawCircle(pivotX, pivotY, PIVOT_RADIUS, mPaint);
+        
+        //if (mRecorder != null && mRecorder.state() == Recorder.RECORDING_STATE)
+      //       postInvalidateDelayed(ANIMATION_INTERVAL);
+    }
+}
diff --git a/app/src/main/java/mobile/miki/VersionActivity.java b/app/src/main/java/mobile/miki/VersionActivity.java
new file mode 100644 (file)
index 0000000..e09fa89
--- /dev/null
@@ -0,0 +1,317 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki;\r
+\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.SystemProperties;\r
+import android.preference.PreferenceManager;\r
+import android.telephony.TelephonyManager;\r
+import android.util.DisplayMetrics;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.LinearLayout;\r
+import android.widget.TextView;\r
+\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+import mobile.miki.util.FTUtils;\r
+import mobile.miki.util.IATUtils;\r
+\r
+public class VersionActivity extends BaseActivity implements android.view.View.OnClickListener {\r
+    private static final String TAG = "VersionActivity";\r
+    private ButtonViewTwo buttonView;\r
+    boolean running;\r
+    boolean pcbatest;\r
+    TextView rfParametersValue; //校准状态\r
+    String imeiValue = "";\r
+    String barCode = "";\r
+    LinearLayout ll_imei2;\r
+    private TextView simidParametersValue, cidParameters, cidParametersValue;\r
+\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        MyApplication.getInstance().addActivity(this);\r
+        setContentView(R.layout.version_layout);\r
+        Intent intent = getIntent();\r
+        running = false;\r
+        pcbatest = false;\r
+        if (intent != null) {\r
+            running = intent.getBooleanExtra("running", false);\r
+            pcbatest = intent.getBooleanExtra("pcbatest",false);\r
+        }\r
+\r
+        rfParametersValue = (TextView) findViewById(R.id.rfParametersValue);\r
+        ll_imei2 = ((LinearLayout) findViewById(R.id.ll_imei2));\r
+        ll_imei2.setVisibility(View.GONE);\r
+        //版本号\r
+        ((TextView) findViewById(R.id.tvBuildNumberValue)).setText(Build.DISPLAY);\r
+        //SIM卡 ICCID\r
+        simidParametersValue = (TextView) findViewById(R.id.SimidParametersValue);\r
+        setICCID();\r
+        setImei();\r
+\r
+        cidParameters = (TextView)findViewById(R.id.cidParameters);\r
+        cidParametersValue = (TextView) findViewById(R.id.cidParametersValue);\r
+        barCode = SystemProperties.get("gsm.serial", "");\r
+        Log.i(TAG, "barCode " + barCode);\r
+        //写入cid号\r
+        String cidValue = "";\r
+        Log.i(TAG, "ro.product.brand" + SystemProperties.get("ro.product.brand",""));\r
+        if("sprd".equalsIgnoreCase(SystemProperties.get("ro.product.brand",""))){\r
+            cidValue = FTUtils.GetCidFromSystem();\r
+        }else{\r
+            cidValue = getSerialNumber(barCode);\r
+        }\r
+        cidParameters.setText(getResources().getString(R.string.cid));\r
+        // 校准\r
+        setRF();\r
+\r
+        // 糖果cid地址指向serialno位置\r
+        if (FTUtils.isSugar()) {\r
+            ((TextView) findViewById(R.id.barcode)).setText(barCode);\r
+            cidParametersValue.setText(Build.SERIAL);\r
+            ((TextView) findViewById(R.id.wifi_mac_address)).setText(FTUtils.getWifiMacAddress());\r
+            ((TextView) findViewById(R.id.bluethooth_mac_address)).setText(FTUtils.getBtAddressViaReflection());\r
+        } else {\r
+            cidParametersValue.setText(cidValue);\r
+            ((LinearLayout) findViewById(R.id.ll_wifi_mac_address)).setVisibility(View.GONE);\r
+            ((LinearLayout) findViewById(R.id.ll_bluethooth_mac_address)).setVisibility(View.GONE);\r
+            ((LinearLayout) findViewById(R.id.ll_barcode)).setVisibility(View.GONE);\r
+        }\r
+\r
+        // 展讯获取校准标准\r
+        if (FTUtils.isLieBao() || SystemProperties.get("ro.product.brand", "").equalsIgnoreCase("SPRD")) {\r
+            getZhanXunRf();\r
+            String zhanxunCid = FTUtils.GetCidFromSystem();\r
+            cidParameters.setVisibility(View.GONE);\r
+            cidParametersValue.setText(zhanxunCid);\r
+        }\r
+        // end\r
+        getDisplayMetrics();\r
+\r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+        buttonView.btn_left.setOnClickListener(this);\r
+        buttonView.btn_right.setOnClickListener(this);\r
+        buttonView.btn_left.setClickable(false);\r
+\r
+        registerBroadCast();\r
+    }\r
+\r
+    private void setImei() {\r
+        // imei\r
+        TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);\r
+        if (Build.VERSION.SDK_INT < 26) {\r
+            imeiValue = telephonyManager.getDeviceId();\r
+        } else {\r
+            imeiValue = FTUtils.getImei(this);\r
+        }\r
+        ((TextView) findViewById(R.id.tv_imei)).setText(imeiValue + "");\r
+\r
+        // imei2\r
+        String imei2 = SystemProperties.get("gsm.mtk.imei2", "");\r
+        //酷达需要imei2\r
+        String android_model = Build.MODEL;\r
+        if (android_model.contains("CMCC-CW1A")) {\r
+            if (imei2 != null) {\r
+                ll_imei2.setVisibility(View.VISIBLE);\r
+                ((TextView) findViewById(R.id.imeiParametersValue)).setText(imei2);\r
+            }\r
+        }\r
+    }\r
+\r
+\r
+    private void setRF() {\r
+        if (barCode.length() == 0 || barCode == null) {//值为空,未校准\r
+            rfParametersValue.setText(R.string.no);\r
+            PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "false")\r
+                    .commit();\r
+//             } else if (strVal.length()>=62 && "10".equals(strVal.substring(60, 62))) {//值不为空且后面等于10,校准\r
+        } else if (barCode.length() >= 62 && barCode.substring(barCode.length() - 10, barCode.length()).contains("10")) {\r
+            rfParametersValue.setText(getResources().getString(R.string.yes));\r
+            PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "true")\r
+                    .commit();\r
+        } else {//值不为空,后面不等于10,未校准\r
+            rfParametersValue.setText(getResources().getString(R.string._fail));\r
+            PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "false")\r
+                    .commit();\r
+        }\r
+    }\r
+\r
+    private void setICCID() {\r
+        if ("".equals(getSimId()) || getSimId() == null) {\r
+            simidParametersValue.setText("null");\r
+        } else {\r
+            simidParametersValue.setText(getSimId());\r
+        }\r
+    }\r
+\r
+    //获取屏幕分辨率\r
+    private void getDisplayMetrics() {\r
+        DisplayMetrics dm = new DisplayMetrics();\r
+        this.getWindowManager().getDefaultDisplay().getMetrics(dm);\r
+        int screenWidth = dm.widthPixels;\r
+        int screenHeight = dm.heightPixels;\r
+        ((TextView) findViewById(R.id.screenResolutionParametersValue)).setText(screenWidth + "*" + screenHeight);\r
+    }\r
+\r
+    public static String getSerialNumber(String serial) {\r
+        try {\r
+            if (serial != null) {\r
+                serial = serial.replaceAll("\\s*", "");//去掉空白字符\r
+                if (serial.length() >= 16) {\r
+                    serial = serial.substring(0, 16);\r
+                }\r
+            }\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+        }\r
+        return serial;\r
+    }\r
+\r
+\r
+    public String getSimId() {\r
+        TelephonyManager telephonyManager = (TelephonyManager) this\r
+                .getSystemService(Context.TELEPHONY_SERVICE);\r
+\r
+        String simSerialNumber = telephonyManager.getSimSerialNumber();\r
+\r
+        return simSerialNumber;\r
+    }\r
+\r
+    @Override\r
+    public void onClick(View arg0) {\r
+        Intent intent ;\r
+        if (pcbatest) {\r
+            intent = new Intent(this, CameraPreview.class);\r
+            intent.putExtra("running", true);\r
+            intent.putExtra("pcbatest", true);\r
+        }else{\r
+            intent = new Intent(this, TouchTest.class);\r
+            intent.putExtra("running", true);\r
+            intent.putExtra("pcbatest",false);\r
+        }\r
+\r
+        Intent intent1 = new Intent(this, TestMainActivity.class);\r
+        // TestResult testResult = (TestResult) getApplicationContext();\r
+        switch (arg0.getId()) {\r
+\r
+            case R.id.btn_two_left:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("version", "true")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+            case R.id.btn_two_right:\r
+                if (!running) {\r
+                    startActivity(intent1);\r
+                } else {\r
+                    startActivity(intent);\r
+                }\r
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("version", "false")\r
+                        .commit();\r
+                finish();\r
+                break;\r
+        }\r
+    }\r
+\r
+    @Override\r
+    protected void onResume() {\r
+        buttonView.setSuccessColor();\r
+        buttonView.btn_left.setClickable(true);\r
+        super.onResume();\r
+    }\r
+\r
+    @Override\r
+    public void onBackPressed() {\r
+        // super.onBackPressed();\r
+        if (running) {\r
+            Intent intent = new Intent(this, TestMainList.class);\r
+            startActivity(intent);\r
+            finish();\r
+        } else {\r
+            finish();\r
+        }\r
+    }\r
+\r
+    private void registerBroadCast() {\r
+        IntentFilter filter1 = new IntentFilter();\r
+        filter1.addAction("android.intent.action.SIM_STATE_CHANGED");\r
+        registerReceiver(getSimState, filter1);\r
+    }\r
+\r
+    // 广播\r
+    private BroadcastReceiver getSimState = new BroadcastReceiver() {\r
+        @Override\r
+        public void onReceive(Context arg0, Intent arg1) {\r
+            String action = arg1.getAction();\r
+            if (action.equals("android.intent.action.SIM_STATE_CHANGED")) {\r
+                if ("".equals(getSimId()) || getSimId() == null) {\r
+                    simidParametersValue.setText("null");\r
+                } else {\r
+                    simidParametersValue.setText(getSimId());\r
+                }\r
+            }\r
+\r
+        }\r
+    };\r
+\r
+    @Override\r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+        unregisterReceiver(getSimState);\r
+    }\r
+\r
+    private String str = "loading...";\r
+\r
+    private void getZhanXunRf() {\r
+        str = "GSM ";\r
+        str += IATUtils.sendATCmd("AT+SGMR=0,0,3,0", "atchannel0");\r
+        sleep(100);\r
+        str += "WCDMA ";\r
+        str += IATUtils.sendATCmd("AT+SGMR=0,0,3,1", "atchannel0");\r
+        sleep(100);\r
+        str += "LTE ";\r
+        str += IATUtils.sendATCmd("AT+SGMR=1,0,3,3", "atchannel0");\r
+        sleep(100);\r
+        Log.i(TAG, "str " + str);\r
+        boolean rfSuccess = isRfSuccess(str);\r
+        if (rfSuccess) {\r
+            rfParametersValue.setText(getResources().getString(R.string.yes));\r
+        } else {\r
+            rfParametersValue.setText(getResources().getString(R.string._fail));\r
+        }\r
+        Log.i(TAG, "rfSuccess " + rfSuccess);\r
+    }\r
+\r
+    private void sleep(long time) {\r
+        try {\r
+            Thread.sleep(time);\r
+        } catch (InterruptedException e) {\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+    private boolean isRfSuccess(String str) {\r
+        if (str.contains("BIT2:DCS AGC calibrated Pass") && str.contains("BIT3:DCS APC calibrated Pass")\r
+                && str.contains("BIT4:EGSM AGC calibrated Pass") && str.contains("BIT5:EGSM APC calibrated Pass")\r
+                && str.contains("BIT8:GSM AFC calibrated Pass") && str.contains("BIT20:EDGE Calibration Pass")\r
+                && str.contains("BIT1:TDD LTE AGC Pass") && str.contains("BIT2:TDD LTE APC Pass")) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/WifiTestActiviy.java b/app/src/main/java/mobile/miki/WifiTestActiviy.java
new file mode 100644 (file)
index 0000000..636931c
--- /dev/null
@@ -0,0 +1,256 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki;\r
+\r
+import android.app.ProgressDialog;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.net.wifi.ScanResult;\r
+import android.net.wifi.WifiManager;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+import android.widget.ListView;\r
+import android.widget.TextView;\r
+import android.widget.Toast;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+\r
+import mobile.miki.adapter.ListViewAdapter;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class WifiTestActiviy extends BaseActivity implements android.view.View.OnClickListener {\r
+       private ProgressDialog dialogBar;\r
+       private ListView listView;\r
+       private ArrayList<HashMap<String, Object>> listViewData;\r
+       private WifiManager mainWifi;\r
+       private HashMap<String, Object> map;\r
+       private WifiTestActiviy.WifiReceiver receiverWifi;\r
+       TextView tvState,mac;\r
+       private String wifiHot;\r
+       private List<ScanResult> wifiList;\r
+       private int wifiState;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean pcbatest;\r
+       public WifiTestActiviy() {\r
+               listViewData = new ArrayList();\r
+               map = null;\r
+               wifiHot = null;\r
+       }\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               setContentView(R.layout.wifi_test_layout);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               pcbatest = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+                       pcbatest = intent.getBooleanExtra("pcbatest", false);\r
+               }\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               mac=(TextView) findViewById(R.id.textView1);\r
+               this.tvState = ((TextView) findViewById(R.id.tvState));\r
+               this.mainWifi = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE));\r
+               this.receiverWifi = new WifiReceiver();\r
+               IntentFilter localIntentFilter = new IntentFilter("android.net.wifi.SCAN_RESULTS");\r
+               registerReceiver(this.receiverWifi, localIntentFilter);\r
+               this.listView = ((ListView) findViewById(R.id.lvDevice));\r
+               ArrayList localArrayList = this.listViewData;\r
+               String[] arrayOfString = new String[2];\r
+               arrayOfString[0] = ListViewAdapter.NAME;\r
+               arrayOfString[1] = ListViewAdapter.DESCRIBE;\r
+               int[] arrayOfInt = new int[2];\r
+               arrayOfInt[0] = 2131296343;\r
+               arrayOfInt[1] = 2131296344;\r
+               ListViewAdapter localListViewAdapter = new ListViewAdapter(this, localArrayList, R.layout.list_item, arrayOfString,\r
+                               arrayOfInt);\r
+               this.listView.setAdapter(localListViewAdapter);\r
+               this.dialogBar = new ProgressDialog(this);\r
+               this.dialogBar.setMax(100);\r
+               this.dialogBar.setProgress(0);\r
+               this.dialogBar.incrementProgressBy(1);\r
+               this.dialogBar.setMessage(getResources().getString(R.string.wfScaning));\r
+               this.dialogBar.setProgressStyle(0);\r
+               wifiScan(null);\r
+       }\r
+\r
+\r
+       public boolean openWifi(View view) {\r
+               if (mainWifi == null) {\r
+                       tvState.setText(getResources().getString(R.string.noSuportWifi));\r
+                       return false;\r
+               }\r
+               if (mainWifi.isWifiEnabled()) {\r
+                       tvState.setText(getResources().getString(R.string.wifiOpen));\r
+                       return true;\r
+               }\r
+               tvState.setText(getResources().getString(R.string.wifiOpening));\r
+               mainWifi.setWifiEnabled(true);\r
+               wifiState = mainWifi.getWifiState();\r
+               if (wifiState == 0x3) {\r
+                       tvState.setText(getResources().getString(R.string.wifiOpen));\r
+                       tvState.setText(getResources().getString(R.string.scanBegin));\r
+                       dialogBar.show();\r
+                       mainWifi.startScan();\r
+                       return true;\r
+               }\r
+               if (wifiState == 0x4) {\r
+                       tvState.setText(getResources().getString(R.string.openWififail));\r
+                       return false;\r
+               }\r
+               return false;\r
+       }\r
+\r
+       public void wifiScan(View view) {\r
+               if (openWifi(null)) {\r
+                       tvState.setText(getResources().getString(R.string.scanBegin));\r
+                       dialogBar.show();\r
+                       mainWifi.startScan();\r
+               }\r
+       }\r
+\r
+       protected void onDestroy() {\r
+               unregisterReceiver(receiverWifi);\r
+               if (mainWifi != null) {\r
+                       mainWifi.setWifiEnabled(false);\r
+               }\r
+               super.onDestroy();\r
+       }\r
+\r
+       protected void onResume() {\r
+               registerReceiver(receiverWifi, new IntentFilter("android.net.wifi.SCAN_RESULTS"));\r
+               super.onResume();\r
+       }\r
+\r
+\r
+       class WifiReceiver extends BroadcastReceiver {\r
+\r
+               public void onReceive(Context c, Intent intent) {\r
+                       wifiList = mainWifi.getScanResults();\r
+                       if (wifiList.size() == 0) {\r
+                               tvState.setText(getResources().getString(R.string.foundNoHot));\r
+                       } else {\r
+                               tvState.setText(\r
+                                               getResources().getString(R.string.found) + wifiList.size() + getResources().getString(R.string.grd));\r
+                               ((ListViewAdapter) listView.getAdapter()).removeAll();\r
+\r
+                               pass();\r
+                               try {\r
+                                       mac.setText(getResources().getString(R.string.mac_new)+getWifiMacAddress());//mac地址\r
+                               } catch (Exception e) {\r
+                               }\r
+                               \r
+                       }\r
+                       for (int i = 0x0; i < wifiList.size(); i++) {\r
+                               wifiHot = ((ScanResult) wifiList.get(i)).toString();\r
+                               // ListAdapter localListAdapter1 = this$0new HashMap();\r
+                               WifiTestActiviy.this.map = new HashMap();\r
+                               WifiTestActiviy.this.map.put(ListViewAdapter.NAME, wifiHot.subSequence(0x0, wifiHot.indexOf(",")));\r
+//                             WifiTestActiviy.this.map.put(ListViewAdapter.DESCRIBE,\r
+//                                             wifiHot.subSequence((wifiHot.indexOf(",") + 0x1), wifiHot.length()));\r
+                               ((ListViewAdapter) listView.getAdapter()).add(map);\r
+                       }\r
+                       dialogBar.dismiss();\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, GpsTest.class);\r
+               intent.putExtra("running", true);\r
+               intent.putExtra("pcbatest",pcbatest);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("wifi", "true")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("wifi", "false")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       public void pass() {\r
+               Toast.makeText(getApplicationContext(), getResources().getString(R.string.ins_gsensor_toast),\r
+                               Toast.LENGTH_SHORT).show(); \r
+               buttonView.setSuccessColor();\r
+               \r
+               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("wifi", "true")\r
+               .commit();\r
+               if (running) { \r
+                       new Handler() {\r
+                               @Override\r
+                               public void handleMessage(Message msg) {\r
+                                       super.handleMessage(msg);\r
+                                       switch (msg.what) {\r
+                                       case 0:\r
+                                               Intent intent = new Intent(WifiTestActiviy.this, GpsTest.class);\r
+                                               intent.putExtra("running", true);\r
+                                               intent.putExtra("pcbatest",pcbatest);\r
+                                               startActivity(intent);\r
+                                               WifiTestActiviy.this.finish();\r
+                                               break;\r
+\r
+                                       default:\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                       }.sendEmptyMessageDelayed(0, 1000);\r
+               }else{\r
+                       buttonView.btn_left.setClickable(true);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+       \r
+       private String getWifiMacAddress() {\r
+               WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);\r
+               String macAddress = wifiManager.getConnectionInfo().getMacAddress();\r
+               return macAddress;\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/adapter/AgeingListAdapter.java b/app/src/main/java/mobile/miki/adapter/AgeingListAdapter.java
new file mode 100644 (file)
index 0000000..92da73c
--- /dev/null
@@ -0,0 +1,53 @@
+package mobile.miki.adapter;\r
+\r
+import android.content.Context;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.BaseAdapter;\r
+import android.widget.TextView;\r
+\r
+import java.util.List;\r
+\r
+import mobile.miki.R;\r
+\r
+public class AgeingListAdapter extends BaseAdapter {\r
+    private Context mContext;\r
+    private List<String> list;\r
+    private String[] stateArr;\r
+\r
+    public AgeingListAdapter(Context context, List<String> list, String[] stateArr) {\r
+        mContext = context;\r
+        this.list = list;\r
+        this.stateArr = stateArr;\r
+    }\r
+\r
+    @Override\r
+    public int getCount() {\r
+        return list.size();\r
+    }\r
+\r
+    @Override\r
+    public Object getItem(int i) {\r
+        return list.get(i);\r
+    }\r
+\r
+    @Override\r
+    public long getItemId(int i) {\r
+        return 0;\r
+    }\r
+    @Override\r
+    public View getView(int position, View convertView, ViewGroup parent) {\r
+        LayoutInflater mInflater = LayoutInflater.from(mContext);\r
+        convertView = mInflater.inflate(R.layout.testmain_adapter, null);\r
+        TextView text = (TextView) convertView.findViewById(R.id.text_item);\r
+        text.setText(list.get(position));\r
+\r
+        return convertView;\r
+    }\r
+\r
+    private String getString(int stringId) {\r
+        return mContext.getResources().getString(stringId);\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/adapter/ListViewAdapter.java b/app/src/main/java/mobile/miki/adapter/ListViewAdapter.java
new file mode 100644 (file)
index 0000000..63aac26
--- /dev/null
@@ -0,0 +1,75 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.adapter;\r
+\r
+import android.content.Context;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.SimpleAdapter;\r
+import android.widget.TextView;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import mobile.miki.R;\r
+\r
+public class ListViewAdapter extends SimpleAdapter {\r
+    public static String NAME = "name";\r
+    public static String DESCRIBE = "describe";\r
+    //private ArrayList<HashMap<String, Object>> listData = new ArrayList<Map<String, ?>>();\r
+    private ArrayList<HashMap<String, Object>> listData = new ArrayList();\r
+    \r
+    public ListViewAdapter(Context context, List<Map<String, ?>> data, int resource, String[] from, int[] to) {\r
+        super(context, data, resource, from, to);\r
+        listData = (ArrayList)data;\r
+    }\r
+    \r
+    public View getView(int position, View convertView, ViewGroup parent) {\r
+        View view = super.getView(position, convertView, parent);\r
+        Map<String, Object> map = (Map)getListData().get(position);\r
+        ((TextView)view.findViewById(R.id.name)).setText((CharSequence)map.get(NAME));\r
+        ((TextView)view.findViewById(R.id.describe)).setText((CharSequence)map.get(DESCRIBE));\r
+        return view;\r
+    }\r
+    \r
+    public ArrayList getListData() {\r
+        return listData;\r
+    }\r
+    \r
+    public void setListData(ArrayList<HashMap<String, Object>> listData) {\r
+        this.listData = listData;\r
+    }\r
+    \r
+    public void removeAll() {\r
+        listData.clear();\r
+        notifyDataSetChanged();\r
+    }\r
+    \r
+    public void remove(int index) {\r
+        if((index < 0) || (index > (listData.size() - 0x1))) {\r
+            return;\r
+        }\r
+        Log.i(getClass().getName(), index + "//" + listData.size());\r
+        listData.remove(index);\r
+        notifyDataSetChanged();\r
+    }\r
+    \r
+    public void add(HashMap<String, Object> item) {\r
+        boolean isContain = false;\r
+        for(HashMap<String, Object> data : listData) {\r
+            if(String.valueOf(data.get(NAME)).equalsIgnoreCase(String.valueOf(item.get(NAME)))) {\r
+                isContain = true;\r
+            }\r
+        }\r
+        if(!isContain) {\r
+            listData.add(item);\r
+        }\r
+        notifyDataSetChanged();\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/adapter/TestMainListAdapter.java b/app/src/main/java/mobile/miki/adapter/TestMainListAdapter.java
new file mode 100644 (file)
index 0000000..7a4379a
--- /dev/null
@@ -0,0 +1,57 @@
+package mobile.miki.adapter;\r
+\r
+import android.content.Context;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.BaseAdapter;\r
+import android.widget.TextView;\r
+\r
+import java.util.List;\r
+\r
+import mobile.miki.R;\r
+\r
+public class TestMainListAdapter extends BaseAdapter {\r
+    private Context mContext;\r
+    private List<String> list;\r
+    private String[] stateArr;\r
+\r
+    public TestMainListAdapter(Context context, List<String> list, String[] stateArr) {\r
+        mContext = context;\r
+        this.list = list;\r
+        this.stateArr = stateArr;\r
+    }\r
+\r
+    @Override\r
+    public int getCount() {\r
+        return list.size();\r
+    }\r
+\r
+    @Override\r
+    public Object getItem(int i) {\r
+        return list.get(i);\r
+    }\r
+\r
+    @Override\r
+    public long getItemId(int i) {\r
+        return 0;\r
+    }\r
+    @Override\r
+    public View getView(int position, View convertView, ViewGroup parent) {\r
+        LayoutInflater mInflater = LayoutInflater.from(mContext);\r
+        convertView = mInflater.inflate(R.layout.testmain_adapter, null);\r
+        TextView text = (TextView) convertView.findViewById(R.id.text_item);\r
+        text.setText(list.get(position));\r
+        if (stateArr[position].equals("true")) {\r
+            convertView.setBackgroundResource(R.drawable.button_common_green_bg);\r
+        } else if (stateArr[position].equals("false")) {\r
+            convertView.setBackgroundResource(R.drawable.button_common_red_bg);\r
+        }\r
+        return convertView;\r
+    }\r
+\r
+    private String getString(int stringId) {\r
+        return mContext.getResources().getString(stringId);\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingBaseActivity.java b/app/src/main/java/mobile/miki/ageingmode/AgeingBaseActivity.java
new file mode 100644 (file)
index 0000000..8d3e95f
--- /dev/null
@@ -0,0 +1,123 @@
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Activity;\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.PowerManager;\r
+import android.os.PowerManager.WakeLock;\r
+import android.util.Log;\r
+\r
+import mobile.miki.R;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class AgeingBaseActivity extends Activity {\r
+    private static final String TAG = "BaseActivity";\r
+    private WakeLock wakeLock = null;\r
+    private PowerManager powerManager = null;\r
+    int SINGLEITEM_OR_CYCLE_MODE;\r
+    int WORK_TIME;\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);  \r
+//        wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "FactoryMode");\r
+        IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);\r
+        registerReceiver(homePressReceiver, homeFilter);\r
+               /*if(wakeLock != null) {\r
+                       //是否需计算锁的数量  \r
+                       wakeLock.setReferenceCounted(false);  \r
+                       //请求屏幕常亮,onResume()方法中执行  \r
+                       wakeLock.acquire();\r
+//                     handler.postDelayed(runnable, 1000 * 60 * 30); //30分钟不灭屏\r
+                       \r
+               }*/\r
+        _getIntent();\r
+        calcTime();\r
+    }\r
+\r
+    private void _getIntent() {\r
+        try {\r
+            Intent intent = getIntent();\r
+            WORK_TIME = intent.getIntExtra("work_time", 0);\r
+            SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+        }catch (Exception e) {\r
+\r
+        }\r
+\r
+    }\r
+\r
+    private void calcTime() {\r
+        long beforeTime = FTUtils.GetPreferences(this, R.string.currentTime);\r
+        int afterTime = FTUtils.GetAgeingWorktimePreferences(this, R.string.workTime);\r
+        if (WORK_TIME == -1 && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+            return;\r
+        } else if (WORK_TIME == -1 && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+            afterTime = 1000 * 60 * 60 * 5000;\r
+        }\r
+        Log.i("dxc", "calcTime " + (System.currentTimeMillis() - beforeTime) + " afterTime " + afterTime);\r
+        if (System.currentTimeMillis() - beforeTime > afterTime) { // 100小时\r
+            Log.i("dxc", "calcTime finish");\r
+            finish();\r
+        }\r
+    }\r
+    \r
+    @Override\r
+    protected void onDestroy() {\r
+       super.onDestroy();\r
+       if(wakeLock != null) {\r
+               //取消屏幕常亮,onPause()方法中执行  \r
+               wakeLock.release(); \r
+               wakeLock = null;\r
+       }\r
+       if(handler != null) {\r
+               handler.removeCallbacks(runnable);\r
+       }\r
+\r
+       if (homePressReceiver != null) {\r
+           unregisterReceiver(homePressReceiver);\r
+        }\r
+    }\r
+    \r
+    Handler handler=new Handler();\r
+    Runnable runnable=new Runnable() {\r
+        @Override\r
+        public void run() {\r
+               if(wakeLock != null) {\r
+                       //取消屏幕常亮,onPause()方法中执行  \r
+               wakeLock.release(); \r
+               wakeLock = null;\r
+               }\r
+            \r
+        }\r
+    };\r
+    \r
+    \r
+    //HOME键监听\r
+    private BroadcastReceiver homePressReceiver = new BroadcastReceiver() {\r
+        final String SYSTEM_DIALOG_REASON_KEY = "reason";\r
+        final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";\r
+        @Override\r
+        public void onReceive(Context context, Intent intent) {\r
+            // TODO Auto-generated method stub\r
+            String action = intent.getAction();\r
+            if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){\r
+                String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);\r
+                if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){\r
+                    if(handler != null) {\r
+                               handler.removeCallbacks(runnable);\r
+                       }\r
+                    if(wakeLock != null) {\r
+                               //取消屏幕常亮,onPause()方法中执行  \r
+                       wakeLock.release(); \r
+                       wakeLock = null;\r
+                       }\r
+                }\r
+            }\r
+        }\r
+    };\r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingCameraPreview.java b/app/src/main/java/mobile/miki/ageingmode/AgeingCameraPreview.java
new file mode 100644 (file)
index 0000000..537ca09
--- /dev/null
@@ -0,0 +1,466 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Activity;\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.hardware.Camera;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+import android.os.PowerManager.WakeLock;\r
+import android.preference.PreferenceManager;\r
+import android.util.Log;\r
+import android.view.Surface;\r
+import android.view.SurfaceHolder;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.view.WindowManager;\r
+import android.widget.Button;\r
+import android.widget.Toast;\r
+\r
+import java.lang.ref.WeakReference;\r
+\r
+import mobile.miki.CameraSurfaceView;\r
+import mobile.miki.Constants;\r
+import mobile.miki.R;\r
+import mobile.miki.WifiTestActiviy;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+\r
+public class AgeingCameraPreview extends AgeingBaseActivity implements SurfaceHolder.Callback, OnClickListener {\r
+    private static final String TAG = "AgeingCameraPreview";\r
+    private Camera camera = null;\r
+    Handler handler;\r
+       Button bt;\r
+    private SurfaceHolder holder;\r
+    private boolean isAutoFocus;\r
+    private float mAspectRatio;\r
+    private int mH;\r
+    private int mHorizontalTileSize;\r
+    private int mPrvH;\r
+    private int mPrvW;\r
+    private int mVerticalTileSize;\r
+    private int mW;\r
+    private CameraSurfaceView preview;\r
+    private int TIME = 1000 * 10;\r
+    private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+    private MyHandler ageingHandler;\r
+\r
+    public AgeingCameraPreview() {\r
+        mHorizontalTileSize = 16;\r
+        mVerticalTileSize = 16;\r
+        mAspectRatio = 1.0f;\r
+        //设置camera宽,高\r
+        mPrvH = 360;\r
+        mPrvW = 360;\r
+        isAutoFocus = true;\r
+        handler = new Handler( ) {\r
+            \r
+            public void handleMessage(Message msg) {\r
+                if(camera != null) {\r
+                    camera.autoFocus(null);\r
+                }\r
+            }\r
+        };\r
+    }\r
+    \r
+//    static {\r
+//        System.loadLibrary("ftmjni");\r
+//    }\r
+    private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean isEgeingMode = false;\r
+       private PowerManager powerManager = null;  \r
+       private WakeLock wakeLock = null;  \r
+    \r
+    public void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        requestWindowFeature(0x1);\r
+        setContentView(R.layout.camera_preview_layout);\r
+        sendBraodCaseReceiver();\r
+        registerReceiver();\r
+        ageingHandler = new MyHandler(this);\r
+               bt = (Button)findViewById(R.id.isZoom);\r
+        Log.i("AgeingCameraPreview", "platform:" + getString(R.string.project));\r
+        \r
+        buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+        buttonView.setVisibility(View.GONE);\r
+               \r
+               init();\r
+               ageingMode();\r
+    }\r
+    \r
+    \r
+    private void init() {\r
+       try {\r
+               camera = Camera.open(0);\r
+               } catch (Exception e) {\r
+                       Toast.makeText(AgeingCameraPreview.this, "resume_cameraError", Toast.LENGTH_LONG).show();\r
+               }\r
+        preview = (CameraSurfaceView)findViewById(R.id.camera_preview);\r
+        preview.setAspectRatio(mPrvW, mPrvH);\r
+        holder = preview.getHolder();\r
+        holder.addCallback(this);\r
+        holder.setType(0x3);\r
+        \r
+        buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               \r
+               getCameraIntent();\r
+               if(isEgeingMode) {\r
+                       powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);  \r
+                       wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingCamera");\r
+                       if(wakeLock != null) {\r
+                               //请求屏幕常亮,onResume()方法中执行\r
+                               wakeLock.acquire();\r
+                       }\r
+                       \r
+               }\r
+               \r
+    }\r
+\r
+    /**\r
+     * 处理老化模式的状态\r
+     */\r
+    private void ageingMode() {\r
+       if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+               // 单项无限循环\r
+               if (WORK_TIME == -1) {\r
+                       WORK_TIME = 100000000;\r
+               } \r
+                        TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+            ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+               sendBraodCaseReceiver();\r
+           } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+               TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+            ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+//                     registerReceiver();\r
+        } else {\r
+//             sendBraodCaseReceiver();\r
+        }\r
+    }\r
+    \r
+    private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+        intent.setAction("com.android.stopLCDActivity");\r
+        sendBroadcast(intent);\r
+    }\r
+    \r
+    private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopCameraActivity");\r
+               AgeingCameraPreview.this.registerReceiver(receiver, filter);\r
+       }\r
+    \r
+    private void getCameraIntent() {\r
+       Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+                       \r
+               }\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+    }\r
+    \r
+    protected void onResume() {\r
+        super.onResume();\r
+\r
+\r
+    }\r
+    \r
+    \r
+    \r
+    @Override\r
+    protected void onPause() {\r
+       super.onPause();\r
+\r
+\r
+    }\r
+    \r
+    private int roundUpToTile(int dimension, int tileSize, int maxDimension) {\r
+        return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension);\r
+    }\r
+    \r
+    protected void onDestroy() {\r
+       if(camera != null) {\r
+               camera.release();\r
+            camera = null;\r
+       }\r
+       \r
+       if(wakeLock != null) {\r
+               wakeLock.release();\r
+               wakeLock = null;\r
+       }\r
+       \r
+        isAutoFocus = false;\r
+        stopLoop(null);\r
+        \r
+        if(ageingHandler != null) {\r
+               ageingHandler.removeCallbacksAndMessages(null);\r
+            ageingHandler = null;\r
+        }\r
+        if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+        \r
+        if(handler != null) {\r
+               handler.removeCallbacksAndMessages(handler.obtainMessage());\r
+        }\r
+        super.onDestroy();\r
+    }\r
+    \r
+    public void pullClose(View view) {\r
+        if(camera.getParameters().isZoomSupported()) {\r
+            camera.getParameters().setZoom(0x0);\r
+        }\r
+    }\r
+    \r
+    public void pullFar(View view) {\r
+        if(camera.getParameters().isZoomSupported()) {\r
+            camera.getParameters().setZoom(camera.getParameters().getMaxZoom());\r
+        }\r
+    }\r
+    \r
+   /* public void pullLoop(View view) {\r
+        isAutoFocus = true;\r
+        new AgeingCameraPreview.AutoFocus( ).start();\r
+               if(camera.getParameters().isZoomSupported()) {\r
+        bt.setText(getString(R.string.isZoom_y));\r
+        bt.setTextColor(Color.GREEN);\r
+        bt.setBackgroundColor(0xFFDEAD);\r
+               bt.setVisibility(View.VISIBLE);\r
+               }else{\r
+        bt.setText(getString(R.string.isZoom_n));\r
+        bt.setBackgroundColor(0xFFDEAD);\r
+        bt.setTextColor(Color.RED);\r
+               bt.setVisibility(View.VISIBLE);\r
+               }\r
+\r
+    }*/\r
+\r
+    public void stopLoop(View view) {\r
+        isAutoFocus = false;\r
+    }\r
+\r
+    class AutoFocus extends Thread {\r
+\r
+        public void run() {\r
+            while(isAutoFocus) {\r
+                Log.i("AgeingCameraPreview", "autoFocus");\r
+                try {\r
+                    handler.sendMessage(handler.obtainMessage());\r
+                    sleep(0xbb8);\r
+                    continue;\r
+                } catch(InterruptedException e) {\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    public void surfaceCreated(SurfaceHolder holder) {\r
+\r
+        try {\r
+               ///参数0为主摄像头。不加参数camera可能会为空\r
+//             camera = Camera.open(0);\r
+               if(camera != null) {\r
+                camera.setPreviewDisplay(holder);\r
+                setCameraDirection();\r
+                camera.startPreview();\r
+                return;\r
+               }\r
+\r
+        } catch(Exception exception) {\r
+               exception.printStackTrace();\r
+               String model = Build.MODEL;\r
+               if(!model.equals("F6")){ //传奇报错\r
+               Toast.makeText(AgeingCameraPreview.this, "cameraError", Toast.LENGTH_LONG).show();\r
+                       if(camera != null) {\r
+                               camera.release();\r
+                       camera = null;\r
+                       }\r
+               }\r
+        }\r
+    }\r
+\r
+    public void surfaceDestroyed(SurfaceHolder holder) {\r
+        if(camera != null) {\r
+            camera.stopPreview();\r
+            camera.setPreviewCallback(null);\r
+            camera.release();\r
+            camera = null;\r
+        }\r
+    }\r
+\r
+    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {\r
+        try {\r
+            Camera.Parameters parameters = camera.getParameters();\r
+            parameters.setPictureFormat(0x100);\r
+            parameters.setFlashMode("on");\r
+            parameters.setPictureSize(w, h);\r
+            parameters.setPreviewSize(w, h);\r
+            camera.setParameters(parameters);\r
+            camera.startPreview();\r
+            return;\r
+        } catch(Exception localException1) {\r
+        }\r
+    }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, WifiTestActiviy.class);\r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       //如果当前是老化模式\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "true")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "true")\r
+                                               .commit();\r
+                       }\r
+               if(camera != null) {\r
+                       camera.release();\r
+                camera = null;\r
+               }\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "false")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "false")\r
+                                               .commit();\r
+                       }\r
+               if(camera != null) {\r
+                       camera.release();\r
+                camera = null;\r
+               }\r
+                       finish();\r
+                       break;\r
+               }\r
+\r
+       }\r
+\r
+    /**\r
+        * 获取广播数据\r
+        *\r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       AgeingCameraPreview.this.finish();\r
+               }\r
+       }\r
+\r
+    private void setCameraDirection() {\r
+        Camera.CameraInfo info = new Camera.CameraInfo();\r
+        Camera.getCameraInfo(0, info);\r
+        WindowManager mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);\r
+        int rotation = mWindowManager.getDefaultDisplay().getRotation();\r
+        int degrees = 0;\r
+        switch (rotation) {\r
+            case Surface.ROTATION_0:\r
+                degrees = 0;\r
+                break;\r
+            case Surface.ROTATION_90:\r
+                degrees = 90;\r
+                break;\r
+            case Surface.ROTATION_180:\r
+                degrees = 180;\r
+                break;\r
+            case Surface.ROTATION_270:\r
+                degrees = 270;\r
+                break;\r
+        }\r
+\r
+        int result;\r
+        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {\r
+            result = (info.orientation + degrees) % 360;\r
+            result = (360 - result) % 360; // compensate the mirror\r
+        } else { // back-facing\r
+            result = (info.orientation - degrees + 360) % 360;\r
+        }\r
+        Log.i("dxc", "result " + result);\r
+        camera.setDisplayOrientation(result);\r
+    }\r
+\r
+    class MyHandler extends Handler {\r
+        WeakReference<Activity > mActivityReference;\r
+\r
+        MyHandler(Activity activity) {\r
+            mActivityReference= new WeakReference<Activity>(activity);\r
+        }\r
+        @Override\r
+        public void handleMessage(Message msg) {\r
+            final Activity activity = mActivityReference.get();\r
+            if (activity != null) {\r
+                try {\r
+//                handler.postDelayed(this, TIME);\r
+                    System.out.println("do...");\r
+                    if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                        Intent ageingIntent = new Intent(AgeingCameraPreview.this,AgeingMikeTest.class);\r
+                        ageingIntent.putExtra("ageing_mode", true);\r
+                        ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                        ageingIntent.putExtra("work_time", WORK_TIME);\r
+                        ageingIntent.putExtra("first_start_service", false);\r
+                        startActivity(ageingIntent);\r
+\r
+                    } else {\r
+                        finish();\r
+                    }\r
+                } catch (Exception e) {\r
+                    e.printStackTrace();\r
+                    System.out.println("exception...");\r
+                }\r
+            }\r
+        }\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingLCDtest.java b/app/src/main/java/mobile/miki/ageingmode/AgeingLCDtest.java
new file mode 100644 (file)
index 0000000..6479ef6
--- /dev/null
@@ -0,0 +1,217 @@
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Activity;\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.graphics.Color;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
+import android.view.View;\r
+import android.view.Window;\r
+import android.view.WindowManager;\r
+import android.widget.RelativeLayout;\r
+import android.widget.SeekBar;\r
+\r
+import java.lang.ref.WeakReference;\r
+\r
+import mobile.miki.Constants;\r
+import mobile.miki.R;\r
+\r
+public class AgeingLCDtest extends AgeingBaseActivity{\r
+    public int[] BC =null;\r
+    RelativeLayout r1;\r
+    int i = 0;\r
+    int b ;\r
+    private SeekBar ScreenBrightnessSeekBar; \r
+    boolean isEgeingMode = false;\r
+    private int TIME = 1000 * 10;\r
+    private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private boolean isShowSeekBar = true;\r
+    int[] bkcolor;\r
+    private MyHandler ageingHandler;\r
+    private PowerManager powerManager = null;\r
+    private PowerManager.WakeLock wakeLock = null;\r
+\r
+    private void initRGB() {\r
+        int[] bkcolor = new int[14];\r
+        bkcolor[0] = Color.RED;\r
+        bkcolor[1] = Color.BLUE;\r
+        bkcolor[2] = Color.YELLOW;\r
+        bkcolor[3] = Color.GREEN;\r
+        bkcolor[4] = Color.WHITE;\r
+        bkcolor[5] = Color.CYAN;\r
+        bkcolor[6] = Color.MAGENTA;\r
+        BC =bkcolor;\r
+    }\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        requestWindowFeature(Window.FEATURE_NO_TITLE);\r
+        //全屏\r
+        getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,\r
+                WindowManager.LayoutParams. FLAG_FULLSCREEN);\r
+        setContentView(R.layout.activity_main);\r
+        sendBraodCaseReceiver();;\r
+        registerReceiver();\r
+        initRGB();\r
+        ageingHandler = new MyHandler(this);\r
+        ageingHandler.sendEmptyMessage(2);\r
+        getLcdIntent();\r
+        ageingMode();\r
+        r1 =(RelativeLayout)findViewById(R.id.st);\r
+        r1.setBackgroundColor(BC[0]);\r
+        \r
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();  \r
+        layoutParams.screenBrightness = b;// b是亮度         \r
+        getWindow().setAttributes(layoutParams); \r
+        ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);\r
+        ScreenBrightnessSeekBar.setVisibility(View.GONE);\r
+        powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);\r
+        wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingLCD");\r
+        if(wakeLock != null) {\r
+            //请求屏幕常亮,onResume()方法中执行\r
+            wakeLock.acquire();\r
+        }\r
+    }\r
+\r
+\r
+    private void getLcdIntent() {\r
+       Intent intent = getIntent();\r
+       if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                               isShowSeekBar = intent.getBooleanExtra("show_seekbar", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               \r
+                       }\r
+               }\r
+    }\r
+    \r
+    /**\r
+     * 处理老化模式的状态\r
+     */\r
+    private void ageingMode() {\r
+       if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+               // 单项无限循环\r
+               if (WORK_TIME == -1) {\r
+                       WORK_TIME = 100000000;\r
+               } \r
+               TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+            ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+//             sendBraodCaseReceiver();\r
+       } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+          TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+            ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+//                registerReceiver();\r
+       }\r
+    }\r
+    \r
+    private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopLCDActivity");\r
+               AgeingLCDtest.this.registerReceiver(receiver, filter);\r
+       }\r
+    \r
+    private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+        intent.setAction("com.android.stopRingActivity");\r
+        sendBroadcast(intent);\r
+    }\r
+\r
+    \r
+    @Override\r
+    protected void onResume() {\r
+       super.onResume();\r
+//     powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);  \r
+//             wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock");  \r
+//             if(wakeLock != null) {\r
+//                     //是否需计算锁的数量  \r
+//                     wakeLock.setReferenceCounted(false);  \r
+//                     //请求屏幕常亮,onResume()方法中执行  \r
+//                     wakeLock.acquire();\r
+//             }\r
+    }\r
+    \r
+    @Override\r
+    protected void onPause() {\r
+       super.onPause();\r
+    }\r
+\r
+\r
+       \r
+       protected void onDestroy() {\r
+               \r
+               if(ageingHandler != null) {\r
+                       ageingHandler.removeCallbacksAndMessages(null);\r
+            ageingHandler = null;\r
+        }\r
+               if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+        if(wakeLock != null) {\r
+            wakeLock.release();\r
+            wakeLock = null;\r
+        }\r
+               super.onDestroy();\r
+       }\r
+       \r
+\r
+    /**\r
+        * 获取广播数据\r
+        *\r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       AgeingLCDtest.this.finish();\r
+               }\r
+       }\r
+\r
+    private class MyHandler extends Handler {\r
+        WeakReference<Activity > mActivityReference;\r
+\r
+        MyHandler(Activity activity) {\r
+            mActivityReference= new WeakReference<Activity>(activity);\r
+        }\r
+        @Override\r
+        public void handleMessage(Message msg) {\r
+            final Activity activity = mActivityReference.get();\r
+            if (activity != null) {\r
+                if (msg.what == 1) {\r
+                    try {\r
+                        if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                            Intent ageingIntent = new Intent(activity,AgeingCameraPreview.class);\r
+                            ageingIntent.putExtra("ageing_mode", true);\r
+                            ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                            ageingIntent.putExtra("work_time", WORK_TIME);\r
+                            activity.startActivity(ageingIntent);\r
+                        } else {\r
+                            activity.finish();\r
+                        }\r
+                    } catch (Exception e) {\r
+                        e.printStackTrace();\r
+                        System.out.println("exception...");\r
+                    }\r
+                } else if (msg.what == 2) {\r
+                    r1.setBackgroundColor(BC[i]);\r
+                    i++;\r
+                    if(i == 6) {\r
+                        i = 0;\r
+                    }\r
+                    ageingHandler.sendEmptyMessageDelayed(2, 2000);\r
+                }\r
+            }\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingMikeTest.java b/app/src/main/java/mobile/miki/ageingmode/AgeingMikeTest.java
new file mode 100644 (file)
index 0000000..23bc79b
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ *  HeadSet Test
+ *
+ *  FileName : MikeTest.java
+ *  Creator  :  xuanyang.feng
+ *  Date     :  2011/12/1
+ *  Comment  :  CIT Test -> HeadSet Test  use  AudioTrack and AudioRecord
+ *   
+ */
+package mobile.miki.ageingmode;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioRecord;
+import android.media.AudioTrack;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import java.lang.ref.WeakReference;
+
+import mobile.miki.Constants;
+import mobile.miki.MyApplication;
+import mobile.miki.R;
+import mobile.miki.SimDetectActivity;
+import mobile.miki.VUMeter;
+import mobile.miki.mainui.ButtonViewTwo;
+import mobile.miki.mainui.TestMainActivity;
+import mobile.miki.mainui.TestMainList;
+import mobile.miki.util.FTUtils;
+
+//import sim.android.mtkcit.CITActivity;
+//import sim.android.mtkcit.R;
+//import sim.android.mtkcit.TestActivity;
+
+public class AgeingMikeTest extends AgeingBaseActivity implements View.OnClickListener{
+       static final String TAG = "AgeingMikeTest";
+       private boolean isRun = false;
+       private boolean isClosing = false;
+       WakeLock mWakeLock;
+       private AudioManager mAudioManager;
+       private RecordThread mRecordThread;
+       int bufferReadResult;
+       ImageButton mRecordButton;
+       TextView txtDescript;
+       byte[]  tmpBuf;
+       public int state = 0;
+       public int mVolume = 0;
+       public int nCurrentMusicVolume;
+       public boolean flag = false;
+       public float LeftVolume;
+       public float RightVolume;
+       private ButtonViewTwo buttonView;
+       boolean running;
+
+       static final int mSourceType = MediaRecorder.AudioSource.MIC;
+
+       static final int SAMPLE_RATE_IN_HZ = 8000;
+
+       static final int channelConfiguration = AudioFormat.CHANNEL_IN_STEREO;
+//     private Button btn_success;
+//     private Button btn_fail;
+       static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
+       public static final int PCBA_TEST = 0;
+       public static final int MACHINE_TEST = 1;
+       int recBufSize = 0, playBufSize = 0;
+       int mAudioBufferSize;
+       int mAudioBufferSimpleSize;
+       int mRecBufferSimpleSize;
+       VUMeter mVUMeter;
+       AudioRecord mAudioRecord;
+       AudioTrack mAudioTrack;
+       private int j;
+       int sampleRate = 8000;
+       int channelConfig = AudioFormat.CHANNEL_IN_MONO;
+       int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
+       /*final Handler mHandler = new Handler();
+       final Runnable mUpdataResults = new Runnable() {
+               public void run() {
+                       updateUI();
+               }
+       };*/
+       private MyHandler ageingHandler;
+
+       @Override
+       public void onCreate(Bundle icycle) {
+
+               super.onCreate(icycle);
+               MyApplication.getInstance().addActivity(this);
+               setContentView(R.layout.test_mike);
+               Intent intent = getIntent();
+               sendBraodCaseReceiver();
+               registerReceiver();
+               running = false;
+               if (intent != null) {
+                       running = intent.getBooleanExtra("running", false);;
+               }
+               ageingHandler = new MyHandler(this);
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);
+               buttonView.btn_left.setOnClickListener(this);
+               buttonView.btn_right.setOnClickListener(this);
+               buttonView.btn_left.setClickable(false);
+               buttonView.setVisibility(View.GONE);
+               getCameraIntent();
+               ageingMode();
+               initResourceRefs();
+       }
+
+       @Override
+       protected void onResume() {
+               buttonView.setSuccessColor();
+               buttonView.btn_left.setClickable(true);
+               super.onResume();
+       }
+
+       @Override
+       protected void onStart() {
+               super.onStart();
+       }
+
+       private void initResourceRefs() {
+               PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+               mWakeLock = pm
+                               .newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "MicTest");
+               mWakeLock.acquire();
+               mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+               setVolumeControlStream(AudioManager.STREAM_MUSIC);
+
+               // add_s wangkang 2012.5.3 bug896
+               nCurrentMusicVolume = mAudioManager
+                               .getStreamVolume(AudioManager.STREAM_MUSIC);
+               mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
+                               mAudioManager
+                                               .getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
+
+               // initAudioRecord();
+               initAudioTrack();
+               mVUMeter = (VUMeter) findViewById(R.id.uvMeter);
+               mVUMeter.setVolume(0);
+               mVUMeter.invalidate();
+               mRecordThread = new RecordThread();
+               Log.v(TAG, "initResourceRefs");
+               mRecordThread.start();
+       }
+
+
+       private void initAudioRecord() {
+               Log.v(TAG, "initAudioRecord");
+
+               recBufSize = 2 * AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioEncoding);
+
+               mAudioBufferSimpleSize = recBufSize / 2;
+               mAudioRecord = new AudioRecord(mSourceType, SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioFormat, recBufSize);
+               int audioRecordState = mAudioRecord.getState();
+               if (audioRecordState != AudioRecord.STATE_INITIALIZED) {
+                       Log.v(TAG, "AudioRecord is initialized");
+                       finish();
+               }
+       }
+
+       private void initAudioTrack() {
+               Log.v(TAG, "initAudioTrack");
+
+               playBufSize = 2 * AudioTrack.getMinBufferSize(SAMPLE_RATE_IN_HZ,
+                               channelConfiguration, audioEncoding);
+
+               mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
+                               SAMPLE_RATE_IN_HZ, channelConfiguration, audioFormat,
+                               playBufSize, AudioTrack.MODE_STREAM);
+               int audioTrackState = mAudioTrack.getState();
+               if (audioTrackState != AudioTrack.STATE_INITIALIZED) {
+                       Log.v(TAG, "AudioTrack is initialized");
+                       finish();
+               }
+               initAudioRecord();
+       }
+
+       short[] audioBuffer;
+
+       class RecordThread extends Thread {
+
+               public RecordThread() {
+                       super();
+               }
+
+               public void run() {
+                       Log.d("CIT", "Run");
+                       super.run();
+
+                       if (mAudioRecord == null)
+                               return;
+                       audioBuffer = new short[mAudioBufferSimpleSize];
+                       mAudioRecord.startRecording();
+                       int audioRecordState = mAudioRecord.getRecordingState();
+                       if (audioRecordState != AudioRecord.RECORDSTATE_RECORDING) {
+                               Log.v(TAG, "not recording");
+                               return;
+                       } else {
+                               Log.v(TAG, "start recording");
+
+                       }
+                       
+                       if (mAudioTrack == null)
+                               return;
+                       mAudioTrack.play();
+                       int audioTracktate = mAudioTrack.getPlayState();
+                       if (audioTracktate != AudioTrack.PLAYSTATE_PLAYING) {
+                               Log.v(TAG, "not playing");
+                               return;
+
+                       }
+
+                       Log.v(TAG, "start playing");
+                       mAudioTrack.setStereoVolume(1.0f, 1.0f);
+                       isRun = true;
+                       while (isRun) {
+                               int sampleRate = mAudioRecord.read(audioBuffer, 0,
+                                               mAudioBufferSimpleSize);
+                               if (mAudioBufferSimpleSize < 0) {
+                                       mAudioBufferSimpleSize = 0;
+                               }
+                               
+                               if ((mAudioTrack != null) && (!isClosing))
+                                       try {
+                                               mAudioTrack.write(audioBuffer, 0, mAudioBufferSimpleSize);
+                                       } catch (Exception e) {
+                                               // TODO: handle exception
+                                               e.printStackTrace();
+                                       }
+                                       
+
+                               int v = 0;
+                               for (int i = 0; i < audioBuffer.length; i++) {
+                                       v += audioBuffer[i] * audioBuffer[i];
+                               }
+                               mVolume = v / (50 * (sampleRate + 1));
+                               Log.v(TAG, "mVolume=" + mVolume);
+                               j++;
+                               if (j < 5) {
+                                       mVolume = 20;
+                               }
+//                             mHandler.post(mUpdataResults);
+                               if (ageingHandler != null) {
+//                                     ageingHandler.sendEmptyMessage(2);
+                               }
+                       }
+
+//                     finish();
+
+               }
+
+               public void pause() {
+                       isRun = false;
+               }
+
+               public void start() {
+                       if (!isRun) {
+                               super.start();
+                       }
+               }
+
+       }
+
+       @Override
+       public void onStop() {
+               releaseRec();
+               super.onStop();
+       }
+
+       private void releaseRec() {
+               if (mAudioManager != null) {
+                       //mod_s wangkang 2012.5.3       bug896
+                       mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
+                                       nCurrentMusicVolume, 0);
+                       //mod_s wangkang 2012.5.3       bug896
+               }
+               if (mAudioTrack != null) {
+                       mAudioTrack.release();
+
+               }
+               if (mAudioRecord != null) {
+                       mAudioRecord.release();
+
+               }
+               isRun = false;
+
+       }
+
+       @Override
+       public void onDestroy() {
+               if(mRecordThread != null){
+                       mRecordThread.pause();
+                       mRecordThread = null;
+               }
+               if(ageingHandler != null) {
+                       ageingHandler.removeCallbacksAndMessages(null);
+                       ageingHandler = null;
+               }
+               if (receiver != null) {
+                       unregisterReceiver(receiver);
+               }
+
+               if(mWakeLock != null) {
+                       //取消屏幕常亮,onPause()方法中执行
+                       mWakeLock.release();
+                       mWakeLock = null;
+               }
+
+               if(handler != null) {
+                       handler.removeCallbacksAndMessages(handler.obtainMessage());
+               }
+               super.onDestroy();
+       }
+
+       private void updateUI() {
+               
+//             Log.i("MikeTest000", "updateUI(), mVolume=" + mVolume);
+               
+               mVUMeter.setVolume(mVolume);
+               if ((!flag) && (mVolume > 3000)) {
+//                     btn_success.setEnabled(true);
+                       flag = true;
+               }
+       }
+       
+
+    @Override
+       public void onClick(View arg0) {
+               Intent intent = new Intent(this, SimDetectActivity.class);
+               intent.putExtra("running", true);
+               Intent intent1 = new Intent(this, TestMainActivity.class);
+               // TestResult testResult = (TestResult) getApplicationContext();
+               switch (arg0.getId()) {
+
+               case R.id.btn_two_left:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("mic", "true")
+                                       .commit();
+                       finish();
+                       break;
+               case R.id.btn_two_right:
+                       if (!running) {
+                               startActivity(intent1);
+                       } else {
+                               startActivity(intent);
+                       }
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("mic", "false")
+                                       .commit();
+                       finish();
+                       break;
+               }
+       }
+    
+    @Override
+       public void onBackPressed() {
+               // super.onBackPressed();
+               if (running) {
+                       Intent intent = new Intent(this, TestMainList.class);
+                       startActivity(intent);
+                       finish();
+               } else {
+                       finish();
+               }
+       }
+
+       boolean isEgeingMode = false;
+       private int TIME = 1000 * 10;
+       private int SINGLEITEM_OR_CYCLE_MODE;
+       private int WORK_TIME;
+       private MyReceiver receiver=null;
+
+       private void getCameraIntent() {
+               Intent intent = getIntent();
+               if (intent != null) {
+                       try {
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);
+                               WORK_TIME = intent.getIntExtra("work_time", 0);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+
+                       }
+               }
+       }
+       /**
+        * 处理老化模式的状态
+        */
+       private void ageingMode() {
+               if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {
+                       // 单项无限循环
+                       if (WORK_TIME == -1) {
+                               WORK_TIME = 100000000;
+                       }
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;
+                       ageingHandler.sendEmptyMessageDelayed(1, TIME);
+//                     sendBraodCaseReceiver();
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;
+                       ageingHandler.sendEmptyMessageDelayed(1, TIME);
+//                     registerReceiver();
+               } else {
+//                     sendBraodCaseReceiver();
+               }
+       }
+
+
+       private void sendBraodCaseReceiver() {
+               Intent intent = new Intent();
+               intent.setAction("com.android.stopCameraActivity");
+               sendBroadcast(intent);
+       }
+
+       private void registerReceiver() {
+               receiver = new MyReceiver();
+               IntentFilter filter = new IntentFilter();
+               filter.addAction("com.android.stopMicActivity");
+               registerReceiver(receiver, filter);
+       }
+
+       /**
+        * 获取广播数据
+        *
+        */
+       public class MyReceiver extends BroadcastReceiver {
+               @Override
+               public void onReceive(Context arg0, Intent arg1) {
+                       AgeingMikeTest.this.finish();
+               }
+       }
+
+       class MyHandler extends Handler {
+               WeakReference<Activity > mActivityReference;
+
+               MyHandler(Activity activity) {
+                       mActivityReference= new WeakReference<Activity>(activity);
+               }
+               @Override
+               public void handleMessage(Message msg) {
+                       final Activity activity = mActivityReference.get();
+                       if (activity != null) {
+                               switch (msg.what) {
+                                       case 1:
+                                               try {
+                                                       if(SINGLEITEM_OR_CYCLE_MODE == 2) {
+                                                               Intent ageingIntent = new Intent(AgeingMikeTest.this,AgeingRingtoneActivity.class);
+                                                               if (FTUtils.isSugar()) {
+                                                                       ageingIntent = new Intent(AgeingMikeTest.this,AgeingMotorTestActivity.class);
+                                                               }
+                                                               ageingIntent.putExtra("ageing_mode", true);
+                                                               ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);
+                                                               ageingIntent.putExtra("work_time", WORK_TIME);
+                                                               ageingIntent.putExtra("first_start_service", false);
+                                                               startActivity(ageingIntent);
+                                                       } else {
+                                                               finish();
+                                                       }
+                                               } catch (Exception e) {
+                                                       e.printStackTrace();
+                                                       System.out.println("exception...");
+                                               }
+                                               break;
+
+                                       case 2:
+                                               updateUI();
+                                               break;
+                               }
+
+                       }
+               }
+       }
+}
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingModeActivity.java b/app/src/main/java/mobile/miki/ageingmode/AgeingModeActivity.java
new file mode 100644 (file)
index 0000000..4194f83
--- /dev/null
@@ -0,0 +1,161 @@
+package mobile.miki.ageingmode;\r
+\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.view.View;\r
+import android.widget.AdapterView;\r
+import android.widget.GridView;\r
+import android.widget.RadioButton;\r
+import android.widget.RadioGroup;\r
+import android.widget.RadioGroup.OnCheckedChangeListener;\r
+import android.widget.Toast;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import mobile.miki.BaseActivity;\r
+import mobile.miki.R;\r
+import mobile.miki.adapter.AgeingListAdapter;\r
+import mobile.miki.util.FTUtils;\r
+\r
+public class AgeingModeActivity extends BaseActivity implements OnCheckedChangeListener, AdapterView.OnItemClickListener {\r
+\r
+    private RadioGroup radioGroup_mode;\r
+    private RadioGroup radioGroup_time;\r
+    private int WORK_TIME = 0;\r
+    private int SINGLEITEM_OR_CYCLE_MODE = 0;\r
+    private static final int SINGLEITEM_MODE = 1;\r
+    private static final int CYCLE_MODE = 2;\r
+\r
+    private GridView gridView;\r
+    private AgeingListAdapter adapter;\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.ageing_mode_activity);\r
+        initView();\r
+    }\r
+    private void initView() {\r
+\r
+        radioGroup_mode = (RadioGroup) findViewById(R.id.radiogroup_mode);\r
+        radioGroup_time = (RadioGroup) findViewById(R.id.radiogroup_time);\r
+        RadioButton adioButton3 = (RadioButton) findViewById(R.id.test_time3);\r
+        if (FTUtils.isLieBao()) {\r
+            adioButton3.setText("50");\r
+        }\r
+        radioGroup_mode.setOnCheckedChangeListener(this);\r
+        radioGroup_time.setOnCheckedChangeListener(this);\r
+\r
+        gridView = (GridView) findViewById(R.id.gridview);\r
+        adapter = new AgeingListAdapter(this, getArray(), stateArr);\r
+        gridView.setAdapter(adapter);\r
+        gridView.setOnItemClickListener(this);\r
+    }\r
+\r
+    @Override\r
+    protected void onResume() {\r
+        super.onResume();\r
+    }\r
+\r
+    @Override\r
+    public void onCheckedChanged(RadioGroup radioGroup, int arg1) {\r
+\r
+        switch (radioGroup.getId()) {\r
+            case R.id.radiogroup_mode:\r
+                int mode_radioButtonId = radioGroup.getCheckedRadioButtonId();\r
+                if (mode_radioButtonId == R.id.test_mode1) {\r
+\r
+                    SINGLEITEM_OR_CYCLE_MODE = SINGLEITEM_MODE;\r
+\r
+                } else if (mode_radioButtonId == R.id.test_mode2) {\r
+                    SINGLEITEM_OR_CYCLE_MODE = CYCLE_MODE;\r
+                }\r
+\r
+                break;\r
+\r
+            case R.id.radiogroup_time:\r
+                int time_radioButtonId = radioGroup.getCheckedRadioButtonId();\r
+                RadioButton rb = (RadioButton) findViewById(time_radioButtonId);\r
+                if (time_radioButtonId == R.id.test_time4) {\r
+                    WORK_TIME = -1;\r
+                } else {\r
+                    String test_time = (String) rb.getText();\r
+                    WORK_TIME = Integer.parseInt(test_time);\r
+                }\r
+                break;\r
+\r
+            default:\r
+                break;\r
+        }\r
+\r
+    }\r
+\r
+\r
+    @Override\r
+    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {\r
+        Intent intent = null;\r
+        switch (position) {\r
+            case 0:\r
+                intent = new Intent(AgeingModeActivity.this, AgeingRingtoneActivity.class);\r
+                break;\r
+\r
+            case 1:\r
+                intent = new Intent(AgeingModeActivity.this, AgeingLCDtest.class);\r
+                break;\r
+            case 2:\r
+                intent = new Intent(AgeingModeActivity.this, AgeingCameraPreview.class);\r
+                break;\r
+            case 3:\r
+                intent = new Intent(AgeingModeActivity.this, AgeingMikeTest.class);\r
+                break;\r
+            case 4:\r
+                intent = new Intent(AgeingModeActivity.this, AgeingMotorTestActivity.class);\r
+                break;\r
+            default:\r
+                break;\r
+\r
+        }\r
+        if (intent != null) {\r
+\r
+            if (SINGLEITEM_OR_CYCLE_MODE == 0 || WORK_TIME == 0) {\r
+                Toast.makeText(AgeingModeActivity.this, "请选择测试模式和测试时间", Toast.LENGTH_SHORT).show();\r
+            } else {\r
+                if (SINGLEITEM_OR_CYCLE_MODE == 2 && position != 0) {\r
+                    Toast.makeText(AgeingModeActivity.this, "循环测试模式请点击喇叭测试开始", Toast.LENGTH_SHORT).show();\r
+                } else {\r
+                    FTUtils.SetPreferences(AgeingModeActivity.this, R.string.currentTime, System.currentTimeMillis());\r
+                    FTUtils.SetAgeingWorktimePreferences(AgeingModeActivity.this, R.string.workTime, WORK_TIME * 1000 * 60 * 60);\r
+                    intent.putExtra("ageing_mode", true);\r
+                    intent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                    intent.putExtra("work_time", WORK_TIME);\r
+                    startActivityForResult(intent, 0);\r
+                }\r
+\r
+            }\r
+\r
+        }\r
+\r
+\r
+    }\r
+\r
+    private List<String> getArray() {\r
+        List<String> list = new ArrayList<String>();\r
+        for (int i = 0; i < getList().length; i++) {\r
+            list.add(getList()[i]);\r
+        }\r
+        if (FTUtils.isSugar()) {\r
+            list.add(getString(R.string.shakeTest));\r
+        }\r
+        return list;\r
+    }\r
+\r
+    public String[] getList() {\r
+        String[] listTem = {getString(R.string.speak), getString(R.string.ageing_lcd_test), getString(R.string.camera),\r
+                getString(R.string.mic_title)};\r
+        return listTem;\r
+    }\r
+\r
+    String[] sharedPreferencesArr = {"ageing_speak", "ageing_LCD", "ageing_camera", "mic", "sim", "vibrator"};\r
+    String[] stateArr = new String[sharedPreferencesArr.length];\r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingMotorTestActivity.java b/app/src/main/java/mobile/miki/ageingmode/AgeingMotorTestActivity.java
new file mode 100644 (file)
index 0000000..a9c3b10
--- /dev/null
@@ -0,0 +1,226 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.PowerManager;\r
+import android.os.Vibrator;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+\r
+import mobile.miki.Constants;\r
+import mobile.miki.R;\r
+import mobile.miki.UltravioletMonitorActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+\r
+public class AgeingMotorTestActivity extends AgeingBaseActivity implements View.OnClickListener{\r
+    long[] pattern;\r
+    private Vibrator vibrator;\r
+    boolean running;\r
+       private ButtonViewTwo buttonView;\r
+       private PowerManager powerManager = null;\r
+       private PowerManager.WakeLock wakeLock = null;\r
+\r
+       public AgeingMotorTestActivity() {\r
+        long[] arrayOfLong = new long[4];\r
+        arrayOfLong[0] = 700L;\r
+        arrayOfLong[1] = 1200L;\r
+        arrayOfLong[2] = 700L;\r
+        arrayOfLong[3] = 1200L;\r
+        this.pattern = arrayOfLong;\r
+    }\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.motor_test_layout);\r
+               sendBraodCaseReceiver();\r
+               registerReceiver();\r
+        Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       running = intent.getBooleanExtra("running", false);\r
+               }\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               buttonView.setVisibility(View.GONE);\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);\r
+               onShakeBtnClicked(null);\r
+               getMikeIntent();\r
+               ageingMode();\r
+               powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);\r
+               wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingCamera");\r
+               if(wakeLock != null) {\r
+                       //请求屏幕常亮,onResume()方法中执行\r
+                       wakeLock.acquire();\r
+               }\r
+    }\r
+    \r
+    protected void onResume() {\r
+        super.onResume();\r
+    }\r
+    \r
+    public void onShakeBtnClicked(View view) {\r
+        if(vibrator != null) {\r
+            vibrator.vibrate(pattern, 0x0);\r
+            return;\r
+        }\r
+    }\r
+    \r
+    @Override\r
+    protected void onPause() {\r
+       super.onPause();\r
+    }\r
+    \r
+    protected void onDestroy() {\r
+        if (ageHandler != null) {\r
+                       ageHandler.removeCallbacksAndMessages(null);\r
+                       ageHandler = null;\r
+               }\r
+               if (receiver != null) {\r
+\r
+               }\r
+               if(wakeLock != null) {\r
+                       wakeLock.release();\r
+                       wakeLock = null;\r
+               }\r
+               unregisterReceiver(receiver);\r
+               vibrator.cancel();\r
+        super.onDestroy();\r
+    }\r
+\r
+       boolean isEgeingMode = false;\r
+       private int TIME = 1000 * 10;\r
+       private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private void getMikeIntent() {\r
+               Intent intent = getIntent();\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+\r
+                       }\r
+               }\r
+       }\r
+       /**\r
+        * 处理老化模式的状态\r
+        */\r
+       private void ageingMode() {\r
+               if(isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+                       // 单项无限循环\r
+                       if (WORK_TIME == -1) {\r
+                               WORK_TIME = 100000000;\r
+                       }\r
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+                       ageHandler.postDelayed(runnable, TIME);\r
+//                     sendBraodCaseReceiver();\r
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+                       ageHandler.postDelayed(runnable, TIME);\r
+//                     registerReceiver();\r
+               } else {\r
+//                     sendBraodCaseReceiver();\r
+               }\r
+       }\r
+\r
+       Handler ageHandler = new Handler();\r
+       Runnable runnable = new Runnable() {\r
+\r
+               @Override\r
+               public void run() {\r
+                       // handler自带方法实现定时器\r
+                       try {\r
+//                handler.postDelayed(this, TIME);\r
+                               System.out.println("do...");\r
+                               if(SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                                       Intent ageingIntent = new Intent(AgeingMotorTestActivity.this,AgeingRingtoneActivity.class);\r
+                                       ageingIntent.putExtra("ageing_mode", true);\r
+                                       ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE);\r
+                                       ageingIntent.putExtra("work_time", WORK_TIME);\r
+                                       ageingIntent.putExtra("first_start_service", false);\r
+                                       startActivity(ageingIntent);\r
+                               } else {\r
+                                       finish();\r
+                               }\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               System.out.println("exception...");\r
+                       }\r
+               }\r
+       };\r
+\r
+       private void sendBraodCaseReceiver() {\r
+               Intent intent = new Intent();\r
+               intent.setAction("com.android.stopMicActivity");\r
+               sendBroadcast(intent);\r
+       }\r
+\r
+       private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopMotorActivity");\r
+               registerReceiver(receiver, filter);\r
+       }\r
+\r
+       /**\r
+        * 获取广播数据\r
+        *\r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent = new Intent(this, UltravioletMonitorActivity.class);\r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "true")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (!running) {\r
+                               startActivity(intent1);\r
+                       } else {\r
+                               startActivity(intent);\r
+                       }\r
+                       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "false")\r
+                                       .commit();\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+    \r
+   \r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingRingtoneActivity.java b/app/src/main/java/mobile/miki/ageingmode/AgeingRingtoneActivity.java
new file mode 100644 (file)
index 0000000..9ce618d
--- /dev/null
@@ -0,0 +1,377 @@
+/**\r
+ * Generated by smali2java 1.0.0.558\r
+ * Copyright (C) 2013 Hensence.com\r
+ */\r
+\r
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Activity;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.media.AudioManager;\r
+import android.media.MediaPlayer;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.view.WindowManager;\r
+import android.widget.Button;\r
+\r
+import java.io.IOException;\r
+import java.lang.ref.WeakReference;\r
+\r
+import mobile.miki.Constants;\r
+import mobile.miki.MikeTest;\r
+import mobile.miki.R;\r
+import mobile.miki.SimDetectActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+import mobile.miki.util.FTUtils;\r
+import mobile.miki.util.Logger;\r
+\r
+public class AgeingRingtoneActivity extends AgeingBaseActivity implements\r
+               MediaPlayer.OnCompletionListener, OnClickListener /*, SeekBar.OnSeekBarChangeListener*/{\r
+       private boolean isPlaying;\r
+       private MediaPlayer mediaPlayer;\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean isEgeingMode = false;\r
+       private Button mShowVolum;\r
+\r
+       private int i = 0;\r
+       private int TIME = 1000 * 6;\r
+       private int SINGLEITEM_OR_CYCLE_MODE;\r
+       private int WORK_TIME;\r
+       private MyReceiver receiver=null;\r
+       private boolean isFirstStartService = true;\r
+       private boolean isShowSeekbar = true;\r
+//     private SeekBar seekBar;\r
+       int maxVolume;\r
+       AudioManager audioManager;\r
+       private MyHandler ageingHandler;\r
+\r
+       public AgeingRingtoneActivity() {\r
+               isPlaying = false;\r
+       }\r
+\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setContentView(R.layout.ringtone_test_layout);\r
+               if (!FTUtils.isLieBao()) {\r
+                       getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,\r
+                                       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\r
+               }\r
+               sendBraodCaseReceiver();\r
+               registerReceiver();\r
+               ageingHandler = new MyHandler(this);\r
+               getRingIntent();\r
+               ageingMode();\r
+               /*if (FTUtils.isSugar()) {\r
+                       if (MotorTestActivity.instance != null) {\r
+                               MotorTestActivity.instance.finish();\r
+                       }\r
+               } else {\r
+                       if (AgeingMikeTest.instance != null) {\r
+                               AgeingMikeTest.instance.finish();\r
+                       }\r
+               }\r
+*/\r
+               mShowVolum = (Button) findViewById(R.id.bt_showvolum);\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_left.setClickable(false);\r
+               buttonView.setVisibility(View.GONE);\r
+               onRingtoneBtnClicked(null);\r
+               /*seekBar = (SeekBar) findViewById(R.id.seekbar);\r
+               if (!FTUtils.isSugar()) {\r
+                       seekBar.setVisibility(View.GONE);\r
+               }\r
+               seekBar.setOnSeekBarChangeListener(this);*/\r
+               audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);\r
+               maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);\r
+\r
+               Logger.d("maxVolume " + maxVolume);\r
+               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,maxVolume\r
+                               , AudioManager.ADJUST_SAME);\r
+               /*seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));*/\r
+               mShowVolum.setOnClickListener(new OnClickListener() {\r
+                       @Override\r
+                       public void onClick(View arg0) {\r
+                               int currentVolume = audioManager\r
+                                               .getStreamVolume(AudioManager.STREAM_MUSIC);\r
+                               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,\r
+                                               currentVolume, AudioManager.FLAG_SHOW_UI);\r
+                       }\r
+               });\r
+       }\r
+\r
+       private void getRingIntent() {\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                               SINGLEITEM_OR_CYCLE_MODE = intent\r
+                                               .getIntExtra("singleitem_or_cycle_mode", 0);\r
+                               WORK_TIME = intent.getIntExtra("work_time", 0);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+               \r
+               if (intent != null) {\r
+                       try {\r
+                               isFirstStartService = intent.getBooleanExtra("first_start_service", false);\r
+                       } catch (Exception e) {\r
+                               // TODO: handle exception\r
+                       }\r
+               }\r
+       }\r
+\r
+       @Override\r
+       protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+               if (resultCode == Constants.AGING_MODE_SETRESULT) {\r
+\r
+               }\r
+               super.onActivityResult(requestCode, resultCode, data);\r
+       }\r
+\r
+       /**\r
+        * 处理老化模式下的状态\r
+        */\r
+       private void ageingMode() {\r
+               if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1) {\r
+                       // 单项无限循环\r
+                       if (WORK_TIME == -1) {\r
+                               WORK_TIME = 100000000;\r
+                       }\r
+                       TIME = WORK_TIME * Constants.SINGLEITEM_TIMES;\r
+                       ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+               } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                       TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES;\r
+                       ageingHandler.sendEmptyMessageDelayed(1, TIME);\r
+                       isShowSeekbar = isFirstStartService;\r
+               }\r
+       }\r
+       \r
+       private void sendBraodCaseReceiver() {\r
+       Intent intent = new Intent();\r
+       if (FTUtils.isSugar()) {\r
+                       intent.setAction("com.android.stopMotorActivity");\r
+               } else {\r
+                       intent.setAction("com.android.stopMicActivity");\r
+               }\r
+        sendBroadcast(intent);\r
+    }\r
+\r
+       private void registerReceiver() {\r
+               receiver = new MyReceiver();\r
+               IntentFilter filter = new IntentFilter();\r
+               filter.addAction("com.android.stopRingActivity");\r
+               AgeingRingtoneActivity.this.registerReceiver(receiver, filter);\r
+       }\r
+\r
+       protected void onDestroy() {\r
+               if (mediaPlayer != null) {\r
+                       mediaPlayer.release();\r
+                       mediaPlayer = null;\r
+               }\r
+\r
+               if (ageingHandler != null) {\r
+                       ageingHandler.removeCallbacksAndMessages(null);\r
+                       ageingHandler = null;\r
+               }\r
+               if (receiver != null) {\r
+                       unregisterReceiver(receiver);\r
+               }\r
+               super.onDestroy();\r
+       }\r
+\r
+\r
+       public void onRingtoneBtnClicked(View view) {\r
+               String model = Build.MODEL;\r
+               if (isPlaying) {\r
+                       return;\r
+               }\r
+               if (model != null\r
+                               && (model.contains("WG1702") || model.contains("PD88-18"))\r
+                               || (model.contains("SCX-N18-18") || model.contains("PD88-8"))) {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei);\r
+               } else if (model.contains("C02A") || model.contains("C02")) {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.liebao);\r
+               } else {\r
+                       mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei);\r
+               }\r
+\r
+               if (mediaPlayer != null) {\r
+                       mediaPlayer.stop();\r
+               }\r
+               try {\r
+                       mediaPlayer.setOnCompletionListener(this);\r
+                       mediaPlayer.setLooping(true);\r
+                       mediaPlayer.prepare();\r
+                       mediaPlayer.start();\r
+                       isPlaying = true;\r
+                       return;\r
+               } catch (IllegalStateException e) {\r
+                       return;\r
+               } catch (IOException e) {\r
+               }\r
+       }\r
+\r
+       public void onCompletion(MediaPlayer mp) {\r
+               isPlaying = false;\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent;\r
+               //传奇不需要mic\r
+               String model = Build.MODEL;\r
+               if(model != null && model.contains("F6")) {\r
+                       intent = new Intent(this, SimDetectActivity.class);\r
+               } else {\r
+                       intent = new Intent(this, MikeTest.class);\r
+               }\r
+               \r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+               // TestResult testResult = (TestResult) getApplicationContext();\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       // 如果当前是老化模式测试\r
+                       if (isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this, AgeingModeActivity.class);\r
+                               ageingIntent.putExtra("ageing_mode", true);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("ageing_speak", "true").commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("speak", "true").commit();\r
+                       }\r
+\r
+                       finish();\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       if (isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this, AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("ageing_speak", "false").commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager\r
+                                               .getDefaultSharedPreferences(getApplicationContext())\r
+                                               .edit().putString("speak", "false").commit();\r
+                       }\r
+\r
+                       finish();\r
+                       break;\r
+               }\r
+       }\r
+\r
+       @Override\r
+       protected void onResume() {\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+               super.onResume();\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+       /*@Override\r
+       public void onProgressChanged(SeekBar seekBar, int i, boolean b) {\r
+               audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);\r
+       }\r
+\r
+       @Override\r
+       public void onStartTrackingTouch(SeekBar seekBar) {\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onStopTrackingTouch(SeekBar seekBar) {\r
+\r
+       }*/\r
+\r
+       /**\r
+        * 获取广播数据\r
+        * \r
+        */\r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       AgeingRingtoneActivity.this.finish();\r
+               }\r
+       }\r
+\r
+       class MyHandler extends Handler {\r
+               WeakReference<Activity > mActivityReference;\r
+\r
+               MyHandler(Activity activity) {\r
+                       mActivityReference= new WeakReference<Activity>(activity);\r
+               }\r
+               @Override\r
+               public void handleMessage(Message msg) {\r
+                       final Activity activity = mActivityReference.get();\r
+                       if (activity != null) {\r
+                               try {\r
+                                       if (SINGLEITEM_OR_CYCLE_MODE == 2) {\r
+                                               Intent ageingIntent = new Intent(AgeingRingtoneActivity.this,\r
+                                                               AgeingLCDtest.class);\r
+                                               ageingIntent.putExtra("ageing_mode", true);\r
+                                               ageingIntent.putExtra("singleitem_or_cycle_mode",\r
+                                                               SINGLEITEM_OR_CYCLE_MODE);\r
+                                               ageingIntent.putExtra("work_time", WORK_TIME);\r
+                                               ageingIntent.putExtra("show_seekbar", isShowSeekbar);\r
+                                               startActivity(ageingIntent);\r
+                                       }else {\r
+                                               finish();\r
+                                       }\r
+                               } catch (Exception e) {\r
+                                       e.printStackTrace();\r
+                                       System.out.println("exception...");\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/ageingmode/AgeingService.java b/app/src/main/java/mobile/miki/ageingmode/AgeingService.java
new file mode 100644 (file)
index 0000000..2a9dd24
--- /dev/null
@@ -0,0 +1,110 @@
+package mobile.miki.ageingmode;\r
+\r
+import android.app.Service;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Handler;\r
+import android.os.IBinder;\r
+import android.widget.Toast;\r
+\r
+import mobile.miki.CameraPreview;\r
+import mobile.miki.LCDtestAgeing;\r
+import mobile.miki.MikeTest;\r
+import mobile.miki.MotorTestActivity;\r
+import mobile.miki.RingtoneActivity;\r
+\r
+public class AgeingService extends Service {\r
+       private int WORK_TIME;\r
+       private int TIME = 0;\r
+       private MyReceiver receiver=null;\r
+\r
+       @Override\r
+       public void onCreate() {\r
+               receiver=new MyReceiver();\r
+        IntentFilter filter=new IntentFilter();\r
+        filter.addAction("com.android.stopTiming");\r
+        registerReceiver(receiver, filter);\r
+               super.onCreate();\r
+       }\r
+\r
+       @Override\r
+       public int onStartCommand(Intent intent, int flags, int startId) {\r
+               try {\r
+                       WORK_TIME = intent.getIntExtra("work_time",0);\r
+//                     TIME = WORK_TIME * 1000 * 60 * 60;\r
+                       TIME = 1000 * 60;\r
+            Toast.makeText(this, "onStartCommand", Toast.LENGTH_LONG).show();\r
+                       handler.postDelayed(runnable, TIME );\r
+               } catch (Exception e) {\r
+                       // TODO: handle exception\r
+               }\r
+               \r
+               return super.onStartCommand(intent, flags, startId);\r
+       }\r
+       \r
+       @Override\r
+       public boolean stopService(Intent name) {\r
+               if(handler != null && runnable != null) {\r
+                       handler.removeCallbacks(runnable);\r
+               }\r
+               return super.stopService(name);\r
+       }\r
+       \r
+       \r
+\r
+       @Override\r
+       public IBinder onBind(Intent arg0) {\r
+               return null;\r
+       }\r
+\r
+    Handler handler = new Handler();\r
+    Runnable runnable = new Runnable() {\r
+\r
+               @Override\r
+               public void run() {\r
+                       // handler自带方法实现定时器\r
+                       try {\r
+                Toast.makeText(AgeingService.this, "onStartCommand", Toast.LENGTH_LONG).show();\r
+                               Intent intent = new Intent();\r
+                               intent.setAction("com.android.stopActivity");\r
+                               sendBroadcast(intent);\r
+                               if(RingtoneActivity.instance != null) {\r
+                                       RingtoneActivity.instance.finish();\r
+                               }\r
+                               \r
+                               if(LCDtestAgeing.instance != null) {\r
+                                       LCDtestAgeing.instance.finish();\r
+                               }\r
+                               \r
+                               if(CameraPreview.instance != null) {\r
+                                       CameraPreview.instance.finish();\r
+                               }\r
+\r
+                               if (MikeTest.instance != null) {\r
+                                       MikeTest.instance.finish();\r
+                               }\r
+\r
+                               if (MotorTestActivity.instance != null) {\r
+                                       MotorTestActivity.instance.finish();\r
+                               }\r
+                               stopSelf();\r
+                               \r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                               System.out.println("exception...");\r
+                       }\r
+               }\r
+       };\r
+       \r
+       public class MyReceiver extends BroadcastReceiver {\r
+               @Override\r
+               public void onReceive(Context arg0, Intent arg1) {\r
+                       if(handler != null && runnable != null) {\r
+                               handler.removeCallbacks(runnable);\r
+                       }\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/flow/DownLoad.java b/app/src/main/java/mobile/miki/flow/DownLoad.java
new file mode 100644 (file)
index 0000000..03c55ad
--- /dev/null
@@ -0,0 +1,155 @@
+package mobile.miki.flow;\r
+\r
+import android.app.Activity;\r
+import android.net.ConnectivityManager;\r
+import android.net.NetworkInfo;\r
+import android.os.Bundle;\r
+import android.os.Environment;\r
+import android.util.Log;\r
+import android.widget.TextView;\r
+\r
+import com.liulishuo.filedownloader.BaseDownloadTask;\r
+import com.liulishuo.filedownloader.FileDownloadListener;\r
+import com.liulishuo.filedownloader.FileDownloader;\r
+\r
+import java.io.File;\r
+import java.text.DecimalFormat;\r
+\r
+import mobile.miki.R;\r
+import rx.Observable;\r
+import rx.Subscriber;\r
+import rx.schedulers.Schedulers;\r
+\r
+public class DownLoad extends Activity {\r
+    String url = "http://businessapp.enqualcomm.com/serviceapihttp";      //正式服务器\r
+    String urlType = "3";\r
+    String path = Environment.getExternalStorageDirectory().getPath() + "/file007.apk";\r
+    private TextView tv_value;\r
+    private TextView tv_title;\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.download);\r
+        initView();\r
+        if (!wifiIsConnected()) {\r
+            startDownLoad();\r
+        }\r
+    }\r
+\r
+    private boolean wifiIsConnected() {\r
+        ConnectivityManager connManager = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE);\r
+        NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);\r
+        return mWifi.isConnected();\r
+    }\r
+\r
+    private void initView() {\r
+        tv_value = (TextView) findViewById(R.id.tv_value);\r
+        tv_title = (TextView) findViewById(R.id.tv_title);\r
+        tv_value.setText("0");\r
+\r
+\r
+    }\r
+\r
+    private void startDownLoad() {\r
+        Observable.create(new GetDownloadUrl(urlType))\r
+                .subscribeOn(Schedulers.io())\r
+                .subscribe(new Subscriber<String>() {\r
+                    @Override\r
+                    public void onCompleted() {\r
+                        Log.i("dxc", "获取地址失败");\r
+//                        setDownloadError();\r
+                    }\r
+\r
+                    @Override\r
+                    public void onError(Throwable e) {\r
+                        Log.i("dxc", "获取地址失败");\r
+//                        setDownloadError();\r
+                    }\r
+\r
+                    @Override\r
+                    public void onNext(String s) {\r
+                        downLoadTask(s);\r
+                    }\r
+                });\r
+    }\r
+\r
+    @Override\r
+    protected void onDestroy() {\r
+        super.onDestroy();\r
+        FileDownloader.getImpl().clearAllTaskData();\r
+        FileDownloader.getImpl().stopForeground(true);\r
+    }\r
+\r
+    private void downLoadTask(String url) {\r
+        Log.i("dxc", "启动下载 url==" + url);\r
+        Log.i("dxc", "启动下载 path==" + path);\r
+        File file = new File(path);\r
+        if (file.exists()) {\r
+            file.delete();\r
+        }\r
+\r
+        FileDownloader.getImpl().create(url)\r
+                .setPath(path)\r
+                .setListener(new FileDownloadListener() {\r
+                    @Override\r
+                    protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {\r
+                        Log.i("dxc", "!!!!!!!pending totalBytes " + totalBytes);\r
+                    }\r
+\r
+                    @Override\r
+                    protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {\r
+                        Log.i("dxc", "!!!!!!!connected " + totalBytes);\r
+                        tv_title.setText("total:" + new DecimalFormat("0.00").format(totalBytes * 1.06 / 1024 / 1024) + "MB");\r
+                    }\r
+\r
+                    @Override\r
+                    protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {\r
+                        double hasDown = soFarBytes * 1.06 / (totalBytes * 1.06) * 100;\r
+                        DecimalFormat df = new DecimalFormat("0.00");\r
+                        tv_value.setText("download: " + df.format(hasDown) + "%");\r
+                    }\r
+\r
+                    @Override\r
+                    protected void blockComplete(BaseDownloadTask task) {\r
+                        Log.i("dxc", "!!!!!!!blockComplete");\r
+                    }\r
+\r
+                    @Override\r
+                    protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) {\r
+                        Log.i("dxc", "!!!!!!!retry");\r
+                    }\r
+\r
+                    @Override\r
+                    protected void completed(BaseDownloadTask task) {\r
+                        Log.i("dxc", "!!!!!!!completed");\r
+                        tv_value.setText("download: " + 100 + "%");\r
+                        File file = new File(path);\r
+                        if (!file.exists()) {\r
+                            return;\r
+                        }\r
+//                        file.delete();\r
+//                        downLoadNumber++;\r
+//                        mTotalNumber++;\r
+//                        Logger.i("删除成功");\r
+//                        mRuntime.getDbHelper().insertOrUpdateDownLoadInfo(mImsi,downLoadNumber,mTotalNumber,mCurrentTimeMillis+"");\r
+//                        mIsStartDownload = false;\r
+                    }\r
+\r
+                    @Override\r
+                    protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {\r
+                    }\r
+\r
+                    @Override\r
+                    protected void error(BaseDownloadTask task, Throwable e) {\r
+                        Log.i("dxc", "下载失败==" + e.getMessage());\r
+//                        setDownloadError();\r
+                    }\r
+\r
+                    @Override\r
+                    protected void warn(BaseDownloadTask task) {\r
+                    }\r
+                }).start();\r
+    }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/flow/GetDownloadUrl.java b/app/src/main/java/mobile/miki/flow/GetDownloadUrl.java
new file mode 100644 (file)
index 0000000..688c7e5
--- /dev/null
@@ -0,0 +1,61 @@
+package mobile.miki.flow;\r
+\r
+import android.util.Log;\r
+\r
+import org.json.JSONObject;\r
+\r
+import okhttp3.Call;\r
+import okhttp3.MultipartBody;\r
+import okhttp3.OkHttpClient;\r
+import okhttp3.Request;\r
+import okhttp3.Response;\r
+import rx.Observable;\r
+import rx.Subscriber;\r
+\r
+/**\r
+ * Created by EQC1111 on 2017/12/12.\r
+ */\r
+\r
+public class GetDownloadUrl implements Observable.OnSubscribe<String> {\r
+    OkHttpClient client = new OkHttpClient();\r
+    String url = "http://businessapp.enqualcomm.com/serviceapihttp";      //正式服务器\r
+    String urlType;\r
+\r
+    public GetDownloadUrl( String urlType) {\r
+        this.urlType = urlType;\r
+    }\r
+\r
+    @Override\r
+    public void call(Subscriber<? super String> subscriber) {\r
+        JSONObject eqcjson = new JSONObject();\r
+        try {\r
+            eqcjson.put("cmd", "querydownurlbpo");\r
+            eqcjson.put("licence", "SPORTGD823YQ");\r
+            eqcjson.put("version", "1.0");\r
+            eqcjson.put("site", 12);\r
+            eqcjson.put("urltype", urlType);\r
+\r
+\r
+            MultipartBody.Builder bodyBuilder = new MultipartBody.Builder().addFormDataPart("eqcjson", eqcjson.toString());\r
+            Request.Builder builder = new Request.Builder().url(url);\r
+            builder.post(bodyBuilder.build());\r
+\r
+            Call call = client.newCall(builder.build());\r
+            Response resp = call.execute();\r
+\r
+            if (resp.isSuccessful()) {\r
+                Log.i("dxc", "resp.isSuccessful");\r
+                String response = resp.body().string();\r
+                JSONObject rs = new JSONObject(response);\r
+                String result = rs.getString("result");\r
+\r
+                JSONObject resu = new JSONObject(result);\r
+                String downurl = resu.getString("downurl");\r
+                subscriber.onNext(downurl);\r
+            }\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+            subscriber.onCompleted();\r
+        }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/lcd/LcdActivity.java b/app/src/main/java/mobile/miki/lcd/LcdActivity.java
new file mode 100644 (file)
index 0000000..01a3a5a
--- /dev/null
@@ -0,0 +1,149 @@
+package mobile.miki.lcd;\r
+\r
+import android.app.Activity;\r
+import android.content.BroadcastReceiver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.view.Window;\r
+import android.view.WindowManager;\r
+import android.widget.TextView;\r
+\r
+import mobile.miki.MyApplication;\r
+import mobile.miki.R;\r
+\r
+public class LcdActivity extends Activity {\r
+       private TextView mLcdTextView;\r
+       private Handler mHandler;\r
+       boolean running;\r
+       private final int MSGID_LCD_RED = 0;\r
+       private final int MSGID_LCD_GREEN = 1;\r
+       private final int MSGID_LCD_BLUE = 2;\r
+       private final int MSGID_LCD_YELLOW = 4;\r
+       private final int MSGID_LCD_WHITE = 5;\r
+       private final int MSGID_LCD_OK = 6;\r
+\r
+       @Override\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               // TODO Auto-generated method stub\r
+               requestWindowFeature(Window.FEATURE_NO_TITLE);\r
+\r
+               getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,\r
+                               WindowManager.LayoutParams.FLAG_FULLSCREEN);\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               setContentView(R.layout.lcd);\r
+               mLcdTextView = (TextView) findViewById(R.id.id_lcd);\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);;\r
+                       } catch (Exception e) {\r
+                               // TODO: handle exception\r
+                       }\r
+                       \r
+               }\r
+               IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);\r
+        registerReceiver(homePressReceiver, homeFilter);\r
+               \r
+               mHandler = new Handler() {\r
+                       @Override\r
+                       public void handleMessage(Message msg) {\r
+                               // TODO Auto-generated method stub\r
+                               switch (msg.what) {\r
+                               case MSGID_LCD_RED:\r
+                                       mLcdTextView.setBackgroundColor(0xFFFF0000);\r
+                                       break;\r
+                               case MSGID_LCD_GREEN:\r
+                                       mLcdTextView.setBackgroundColor(0xFF00FF00);\r
+                                       break;\r
+                               case MSGID_LCD_BLUE:\r
+                                       mLcdTextView.setBackgroundColor(0xFF0000FF);\r
+                                       break;\r
+                               case MSGID_LCD_YELLOW:// 黑\r
+                                       // mLcdTextView.setBackgroundColor(0xFFFFFF00);\r
+                                       mLcdTextView.setBackgroundColor(0x00000000);\r
+                                       break;\r
+                               case MSGID_LCD_WHITE:\r
+                                       mLcdTextView.setBackgroundColor(0xFFFFFFFF);\r
+                                       break;\r
+                               case MSGID_LCD_OK:\r
+                                       \r
+                                       Intent intent = new Intent(LcdActivity.this,\r
+                                                       LcdJudgActivity.class);\r
+                                       intent.putExtra("running", running);\r
+                                       startActivity(intent);\r
+                                       System.exit(0);\r
+                                       finish();\r
+                                       \r
+                                       break;\r
+                               default:\r
+                                       break;\r
+                               }\r
+                       }\r
+               };\r
+       }\r
+\r
+\r
+\r
+       @Override\r
+       protected void onStart() {\r
+               // TODO Auto-generated method stub\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_RED, 1000);\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_GREEN, 2000);\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_BLUE, 3000);\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_YELLOW, 4000);\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_WHITE, 5000);\r
+               mHandler.sendEmptyMessageDelayed(MSGID_LCD_OK, 6000);\r
+               super.onStart();\r
+       }\r
+       \r
+       @Override\r
+       protected void onDestroy() {\r
+               super.onDestroy();\r
+               if (mHandler != null) {\r
+                       mHandler.removeMessages(MSGID_LCD_RED);\r
+                       mHandler.removeMessages(MSGID_LCD_GREEN);\r
+                       mHandler.removeMessages(MSGID_LCD_BLUE);\r
+                       mHandler.removeMessages(MSGID_LCD_YELLOW);\r
+                       mHandler.removeMessages(MSGID_LCD_WHITE);\r
+                       mHandler.removeMessages(MSGID_LCD_OK);\r
+                       \r
+               }\r
+       }\r
+       \r
+       //HOME键监听\r
+    private BroadcastReceiver homePressReceiver = new BroadcastReceiver() {\r
+        final String SYSTEM_DIALOG_REASON_KEY = "reason";\r
+        final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";\r
+        @Override\r
+        public void onReceive(Context context, Intent intent) {\r
+            // TODO Auto-generated method stub\r
+            String action = intent.getAction();\r
+            if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){\r
+                String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);\r
+                if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){\r
+                       if (mHandler != null) {\r
+                               mHandler.removeMessages(MSGID_LCD_RED);\r
+                               mHandler.removeMessages(MSGID_LCD_GREEN);\r
+                               mHandler.removeMessages(MSGID_LCD_BLUE);\r
+                               mHandler.removeMessages(MSGID_LCD_YELLOW);\r
+                               mHandler.removeMessages(MSGID_LCD_WHITE);\r
+                               mHandler.removeMessages(MSGID_LCD_OK);\r
+                               \r
+                       }\r
+                }\r
+            }\r
+        }\r
+    };\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               // TestManager.goToTestMain(LcdActivity.this);\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/lcd/LcdJudgActivity.java b/app/src/main/java/mobile/miki/lcd/LcdJudgActivity.java
new file mode 100644 (file)
index 0000000..7404e45
--- /dev/null
@@ -0,0 +1,149 @@
+package mobile.miki.lcd;\r
+\r
+import android.app.Activity;\r
+import android.content.Intent;\r
+import android.os.Build;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.view.View;\r
+\r
+import mobile.miki.CameraPreview;\r
+import mobile.miki.MotorTestActivity;\r
+import mobile.miki.MyApplication;\r
+import mobile.miki.R;\r
+import mobile.miki.ageingmode.AgeingModeActivity;\r
+import mobile.miki.mainui.ButtonViewTwo;\r
+import mobile.miki.mainui.TestMainActivity;\r
+import mobile.miki.mainui.TestMainList;\r
+\r
+public class LcdJudgActivity extends Activity implements android.view.View.OnClickListener {\r
+       private ButtonViewTwo buttonView;\r
+       boolean running;\r
+       boolean isEgeingMode = false;\r
+\r
+       @Override\r
+       protected void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               MyApplication.getInstance().addActivity(this);\r
+               setContentView(R.layout.urovo_layout_lcd_tv);\r
+               buttonView = (ButtonViewTwo) findViewById(R.id.btn_set);\r
+               buttonView.btn_left.setOnClickListener(this);\r
+               buttonView.btn_right.setOnClickListener(this);\r
+               buttonView.btn_right.setClickable(true);\r
+\r
+               buttonView.setSuccessColor();\r
+               buttonView.btn_left.setClickable(true);\r
+                getLcdIntent();\r
+               \r
+       }\r
+       \r
+       private void getLcdIntent() {\r
+               Intent intent = getIntent();\r
+               running = false;\r
+               if (intent != null) {\r
+                       try {\r
+                               running = intent.getBooleanExtra("running", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+                       \r
+               }\r
+               if (intent != null) {\r
+                       try {\r
+                               isEgeingMode = intent.getBooleanExtra("ageing_mode", false);\r
+                       } catch (Exception e) {\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View arg0) {\r
+               Intent intent;\r
+               intent = new Intent(this, CameraPreview.class);\r
+               //正指向,贝尔丰需要震动测试\r
+               String model = Build.MODEL;\r
+               if(model != null ) {\r
+                       if(model.contains("WG1702") || model.contains("BF A1") || model.contains("PD88-18") || model.contains("SCX-N18-18") || model.contains("PD88-8") || model.contains("F6")) {\r
+                               intent = new Intent(this, MotorTestActivity.class);\r
+                       }\r
+               }\r
+               //\r
+               \r
+               intent.putExtra("running", true);\r
+               Intent intent1 = new Intent(this, TestMainActivity.class);\r
+\r
+               switch (arg0.getId()) {\r
+\r
+               case R.id.btn_two_left:\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this, AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_LCD", "true")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       // intent1.putExtra("lcd", true);\r
+                                       // setResult(12, intent1);\r
+                                       startActivity(intent1);\r
+                               } else {\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "true")\r
+                                               .commit();\r
+                       }\r
+                       \r
+\r
+                       finish();\r
+\r
+                       break;\r
+               case R.id.btn_two_right:\r
+                       //如果当前是老化模式测试\r
+                       if(isEgeingMode) {\r
+                               Intent ageingIntent = new Intent(this,AgeingModeActivity.class);\r
+                               startActivity(ageingIntent);\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_LCD", "false")\r
+                               .commit();\r
+                       } else {\r
+                               if (!running) {\r
+                                       // intent1.putExtra("lcd", false);\r
+                                       // setResult(12, intent1);\r
+                                       startActivity(intent1);\r
+                               } else {\r
+\r
+                                       startActivity(intent);\r
+                               }\r
+                               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "false")\r
+                                               .commit();\r
+                       }\r
+                       \r
+                       finish();\r
+\r
+                       break;\r
+\r
+               }\r
+\r
+       }\r
+\r
+       @Override\r
+       protected void onDestroy() {\r
+\r
+               super.onDestroy();\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               // super.onBackPressed();\r
+               PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "false")\r
+                               .commit();\r
+               if (running) {\r
+                       Intent intent = new Intent(this, TestMainList.class);\r
+                       startActivity(intent);\r
+                       finish();\r
+               } else {\r
+                       finish();\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/app/src/main/java/mobile/miki/mainui/ButtonViewTwo.java b/app/src/main/java/mobile/miki/mainui/ButtonViewTwo.java
new file mode 100644 (file)
index 0000000..ab532b4
--- /dev/null
@@ -0,0 +1,78 @@
+package mobile.miki.mainui;\r
+\r
+import android.content.Context;\r
+import android.util.AttributeSet;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.widget.Button;\r
+import android.widget.LinearLayout;\r
+\r
+import mobile.miki.R;\r
+\r
+public class ButtonViewTwo extends LinearLayout {\r
+\r
+       public Button btn_left;\r
+       public Button btn_right;\r
+       \r
+       public ButtonViewTwo(Context context) {\r
+               super(context);\r
+               init(context);\r
+       }\r
+\r
+       public ButtonViewTwo(Context context, AttributeSet attrs) {\r
+               super(context, attrs);\r
+               init(context);\r
+       }\r
+       \r
+       public ButtonViewTwo(Context context, AttributeSet attrs, int defStyle) {\r
+               super(context, attrs, defStyle);\r
+               init(context);\r
+       }\r
+       \r
+       private void init(Context context) {\r
+               LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
+               inflater.inflate(R.layout.urovo_ayout_button_two, this);\r
+               btn_left = (Button) findViewById(R.id.btn_two_left);\r
+               btn_right = (Button) findViewById(R.id.btn_two_right);\r
+       }\r
+       \r
+       public void setLeftButtonText(String text){\r
+               btn_left.setText(text);\r
+       }\r
+       \r
+       public void setRightButtonText(String text){\r
+               btn_right.setText(text);\r
+       }\r
+       \r
+       public void setleftButtonVisible(boolean visible){\r
+               if(visible){\r
+                       btn_left.setVisibility(View.VISIBLE);\r
+               }else{\r
+                       btn_left.setVisibility(View.GONE);\r
+               }\r
+       }\r
+       \r
+       public void setrightButtonVisible(boolean visible){\r
+               if(visible){\r
+                       btn_right.setVisibility(View.VISIBLE);\r
+               }else{\r
+                       btn_right.setVisibility(View.GONE);\r
+               }\r
+       }\r
+       \r
+       public void setSuccessColor(){\r
+               btn_left.setBackgroundResource(R.drawable.button_common_green_bg);\r
+       }\r
+       \r
+       public void setSuccessNormalColor(){\r
+               btn_left.setBackgroundResource(R.drawable.btn_special_nrolm);   \r
+       }\r
+       \r
+       public Button getLeftButton(){\r
+               return btn_left;\r
+       }\r
+       \r
+       public Button getRightButton(){\r
+               return btn_right;\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/mainui/FlagPositionActivity.java b/app/src/main/java/mobile/miki/mainui/FlagPositionActivity.java
new file mode 100644 (file)
index 0000000..13da4bc
--- /dev/null
@@ -0,0 +1,112 @@
+package mobile.miki.mainui;\r
+\r
+import android.app.Activity;\r
+import android.os.Bundle;\r
+import android.os.SystemProperties;\r
+import android.util.Log;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.BaseAdapter;\r
+import android.widget.ListView;\r
+import android.widget.TextView;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import mobile.miki.R;\r
+import mobile.miki.util.Logger;\r
+\r
+public class FlagPositionActivity extends Activity {\r
+    private ListView listView;\r
+    private List<String> names = new ArrayList<String>();\r
+    private List<String> valueList = new ArrayList<String>();\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.test_result);\r
+        listView = (ListView) findViewById(R.id.list);\r
+        names.add("耦合标志位");\r
+        names.add("校准标志位");\r
+        names.add("综测标志位");\r
+        //barcord\r
+        String strVal = SystemProperties.get("gsm.serial", "");\r
+        Logger.d("barcode " + strVal);\r
+        if (strVal != null && strVal.length() > 0) {\r
+            if (strVal.length() >= 60) {\r
+                String str = strVal.substring(60, 61);\r
+                addVaule(str);\r
+            } else {\r
+                valueList.add("NA");\r
+            }\r
+            if (strVal.length() >= 62) {\r
+                String str = strVal.substring(61, 63);\r
+                Log.i("dxc", "校准" + str);\r
+                if (str.contains(str)) {\r
+                    valueList.add("PASS");\r
+                }else {\r
+                    valueList.add("FAIL");\r
+                }\r
+            } else {\r
+                valueList.add("NA");\r
+            }\r
+            if (strVal.length() >= 63) {\r
+                String str = strVal.substring(63);\r
+                addVaule(str);\r
+            }else {\r
+                valueList.add("NA");\r
+            }\r
+\r
+        }else {\r
+            valueList.add("NA");\r
+            valueList.add("NA");\r
+            valueList.add("NA");\r
+        }\r
+        ResultAdaper adaper = new ResultAdaper();\r
+        listView.setAdapter(adaper);\r
+    }\r
+\r
+    private void addVaule(String str) {\r
+        if (str.equalsIgnoreCase("P")) {\r
+            valueList.add("PASS");\r
+        } else if (str.equalsIgnoreCase("F")) {\r
+            valueList.add("FAIL");\r
+        } else {\r
+            valueList.add("NA");\r
+        }\r
+    }\r
+\r
+\r
+    class ResultAdaper extends BaseAdapter {\r
+        @Override\r
+        public int getCount() {\r
+            return names.size();\r
+        }\r
+\r
+        @Override\r
+        public Object getItem(int i) {\r
+            return names.get(i);\r
+        }\r
+\r
+        @Override\r
+        public long getItemId(int i) {\r
+            return i;\r
+        }\r
+\r
+        @Override\r
+        public View getView(int position, View convertView, ViewGroup viewGroup) {\r
+            LayoutInflater mInflater = LayoutInflater.from(FlagPositionActivity.this);\r
+            convertView = mInflater.inflate(R.layout.test_result_item, null);\r
+            TextView name = (TextView) convertView.findViewById(R.id.tv_test_name);\r
+            TextView result = (TextView) convertView.findViewById(R.id.tv_test_result);\r
+            if (valueList.get(position).equals("PASS")) {\r
+                result.setTextColor(getResources().getColor(R.color.pass_color));\r
+            } else {\r
+                result.setTextColor(getResources().getColor(R.color.red));\r
+            }\r
+            name.setText(names.get(position));\r
+            result.setText(valueList.get(position));\r
+            return convertView;\r
+        }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java b/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java
new file mode 100644 (file)
index 0000000..f72d677
--- /dev/null
@@ -0,0 +1,97 @@
+package mobile.miki.mainui;\r
+\r
+import android.app.Activity;\r
+import android.app.AlertDialog;\r
+import android.content.ComponentName;\r
+import android.content.DialogInterface;\r
+import android.content.Intent;\r
+import android.content.pm.PackageManager;\r
+import android.os.Bundle;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.widget.Button;\r
+\r
+import mobile.miki.R;\r
+\r
+public class ModeSelectActivity extends Activity implements OnClickListener {\r
+       Button engineer_button, more_button,unbound_button;\r
+       String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL";\r
+       String SERVICE_PKG_NAME = "com.enqualcomm.support";\r
+       String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService";\r
+       @Override\r
+       protected void onCreate(Bundle arg0) {\r
+               super.onCreate(arg0);\r
+               setContentView(R.layout.mode_select_activity);\r
+               engineer_button = (Button) findViewById(R.id.engineer_button);\r
+               more_button = (Button) findViewById(R.id.more_button);\r
+               unbound_button=(Button)findViewById(R.id.unbound_button);\r
+               engineer_button.setOnClickListener(this);\r
+               more_button.setOnClickListener(this);\r
+               unbound_button.setOnClickListener(this);\r
+       }\r
+\r
+       @Override\r
+       public void onClick(View v) {\r
+               if (v.getId() == R.id.engineer_button) {\r
+                       try {\r
+                               ComponentName componentName = new ComponentName(\r
+                                               "com.mediatek.engineermode",\r
+                                               "com.mediatek.engineermode.EngineerMode");\r
+                               Intent intent = new Intent();\r
+                               intent.setComponent(componentName);\r
+                               try {\r
+                                       startActivity(intent);\r
+                               } catch (Exception e) {\r
+                                       e.printStackTrace();\r
+                               }\r
+\r
+                       } catch (Exception e) {\r
+                       }\r
+               }\r
+               else if (v.getId() == R.id.more_button) {\r
+                       try {\r
+                               PackageManager packageManager = getPackageManager();\r
+                               Intent intent = packageManager\r
+                                               .getLaunchIntentForPackage("com.android.settings");\r
+                               startActivity(intent);\r
+                       } catch (Exception e) {\r
+                               // TODO: handle exception\r
+                       }\r
+               }\r
+               else if (v.getId() == R.id.unbound_button) {\r
+                       unBound();\r
+               }\r
+       }\r
+       private void startUnBound()\r
+       {\r
+               try {\r
+               ComponentName componentName = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);\r
+               Intent intent = new Intent(ACTION_UNBOUND_TERMINAL).setComponent(componentName);\r
+                       intent.putExtra("Unbound", true);\r
+               startService(intent);\r
+               Intent intent1 = new Intent(ACTION_UNBOUND_TERMINAL);\r
+                       intent.putExtra("Unbound", true);\r
+                       sendBroadcast(intent1);\r
+               } catch (Exception e) {\r
+                       // TODO: handle exception\r
+               }\r
+       }\r
+       private void unBound() {\r
+               AlertDialog.Builder build = new AlertDialog.Builder(ModeSelectActivity.this);\r
+               build.setTitle(getResources().getString(R.string.unbound));\r
+               build.setPositiveButton(getResources().getString(R.string.submit), new DialogInterface.OnClickListener() {\r
+                       @Override\r
+                       public void onClick(DialogInterface dialog, int which) {\r
+                               startUnBound();\r
+                               dialog.dismiss();\r
+                       }\r
+               });\r
+               build.setNegativeButton(getResources().getString(R.string.unbound_cancel), new DialogInterface.OnClickListener() {\r
+                       @Override\r
+                       public void onClick(DialogInterface dialog, int which) {\r
+                               dialog.dismiss();\r
+                       }\r
+               });\r
+               build.show();\r
+       }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/mainui/TestMainActivity.java b/app/src/main/java/mobile/miki/mainui/TestMainActivity.java
new file mode 100644 (file)
index 0000000..62a1b61
--- /dev/null
@@ -0,0 +1,331 @@
+package mobile.miki.mainui;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.telephony.TelephonyManager;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.Button;
+import android.widget.GridView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import mobile.miki.BaseActivity;
+import mobile.miki.BatteryTestActivity;
+import mobile.miki.BlooToothActivity;
+import mobile.miki.BrightnessTest;
+import mobile.miki.CameraPreview;
+import mobile.miki.DSPActivity;
+import mobile.miki.DialerTestActivity;
+import mobile.miki.GpsTest;
+import mobile.miki.GravitySensorActivity;
+import mobile.miki.HeartRate;
+import mobile.miki.KeysTestActivity;
+import mobile.miki.MikeTest;
+import mobile.miki.MotorTestActivity;
+import mobile.miki.MyApplication;
+import mobile.miki.R;
+import mobile.miki.RingtoneActivity;
+import mobile.miki.SimDetectActivity;
+import mobile.miki.SystemMemory;
+import mobile.miki.TouchTest;
+import mobile.miki.UltravioletMonitorActivity;
+import mobile.miki.VersionActivity;
+import mobile.miki.WifiTestActiviy;
+import mobile.miki.adapter.TestMainListAdapter;
+import mobile.miki.lcd.LcdActivity;
+import mobile.miki.util.FTUtils;
+
+/*程序主界面*/
+
+public class TestMainActivity extends BaseActivity implements OnClickListener, AdapterView.OnItemClickListener {
+
+    private static final String TAG = "TestMainActivity";
+
+    // table items
+
+
+    private static SharedPreferences sp;
+    private static final String FILE_NAME = "UrovoDest";
+    private static final String SHOWALLTEST_KEY = "ShowAllTestOptions";
+    private static final String SAVETESTOPTIONS_KEY = "SavedTestOptions";
+    private boolean showAllTestOptions = false;
+    private boolean savedTestOptions = false;
+
+    private boolean isRfid = false;
+    static ArrayList<String> classList = new ArrayList<String>();
+    boolean running;
+
+    Button test_result;
+    private static final String STAR_SERVICE_ACTION = "intent.action.startservice";
+    private static final String STOP_SERVICE_ACTION = "intent.action.stopservice";
+    TelephonyManager tm;
+
+    private GridView gridView;
+    private TestMainListAdapter adapter;
+    String[] stateArr;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        MyApplication.getInstance().addActivity(this);
+        setContentView(R.layout.urovo_layout_table);
+        initView();
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        getDeviceInfo();
+        adapter = new TestMainListAdapter(this, getArray(), stateArr);
+        setSaveColorState();
+        gridView.setAdapter(adapter);
+        gridView.setOnItemClickListener(this);
+
+    }
+
+    private void getDeviceInfo() {
+        sp = getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
+        showAllTestOptions = sp.getBoolean(SHOWALLTEST_KEY, false);
+        savedTestOptions = sp.getBoolean(SAVETESTOPTIONS_KEY, false);
+    }
+
+    protected void initView() {
+        test_result = (Button) findViewById(R.id.test_result);
+        if (FTUtils.isSugar()) {
+            test_result.setVisibility(View.GONE);
+        }
+        gridView = (GridView) findViewById(R.id.gridview);
+
+        //正指向,贝尔丰需要震动测试
+        String model = Build.MODEL;
+//        if (model != null) {
+//            if (model.contains("WG1702") || model.contains("BF A1") || model.contains("PD88-18") || model.contains("SCX-N18-18") || model.contains("PD88-8") || model.contains("F6")) {
+//                test_watchvibrator.setVisibility(View.VISIBLE);
+//            }
+//        }
+
+        //这里可以打开录音测试
+//        if (model != null && (model.contains("WG1702") || model.contains("PD88-18") || model.contains("SCX-N18-18") || model.contains("PD88-8")) || model.contains("F6")) {
+//            test_watchrecord.setVisibility(View.VISIBLE);
+//        }
+
+//        if (model.contains("F6")) {
+//            test_watchmic.setVisibility(View.GONE);
+//        }
+        test_result.setOnClickListener(this);
+
+        // frid sq20
+        isRfid = false;
+        tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
+        // saveTestOptions();
+    }
+
+
+    @Override
+    protected void onPause() {
+        // TODO Auto-generated method stub
+        super.onPause();
+    }
+
+    @Override
+    protected void onDestroy() {
+        // TODO Auto-generated method stub
+        super.onDestroy();
+    }
+
+
+    @Override
+    public void onClick(View view) {
+        Intent intent = null;
+        switch (view.getId()) {
+
+            case R.id.test_result:
+                sureClearData();
+                break;
+
+            default:
+                break;
+        }
+        if (intent != null) {
+            intent.putExtra("running", false);
+            startActivityForResult(intent, 0);
+        }
+
+    }
+
+    @Override
+    public void onBackPressed() {
+        // super.onBackPressed();
+        Intent intent = new Intent(this, TestMainList.class);
+        startActivity(intent);
+        finish();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+
+    private void setSaveColorState() {
+
+        for (int i = 0; i < testResultList.size(); i++) {
+            String status = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString(testResultList.get(i), "");
+            stateArr[i] = status;
+        }
+
+    }
+
+    public void clearTestData() {
+
+        for (int i = 0; i < testResultList.size(); i++) {
+            PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString(testResultList.get(i), "").commit();
+        }
+        Intent intent = new Intent(this, TestMainActivity.class);
+        startActivity(intent);
+    }
+
+    public void sureClearData() {
+        AlertDialog.Builder build = new AlertDialog.Builder(TestMainActivity.this);
+        build.setTitle("Wroming");
+        build.setTitle(getResources().getString(R.string.clear_new_wanr));
+        build.setPositiveButton(getResources().getString(R.string.clear_new_yes), new DialogInterface.OnClickListener() {
+
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                clearTestData();
+                dialog.dismiss();
+            }
+        });
+        build.setNegativeButton(getResources().getString(R.string.clear_new_no), new DialogInterface.OnClickListener() {
+
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+
+                dialog.dismiss();
+            }
+        });
+        build.show();
+    }
+
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+
+        TextView text = (TextView) view.findViewById(R.id.text_item);
+        String str =  text.getText().toString();
+        startActivity(str);
+    }
+
+    private void startActivity(String text) {
+        Intent intent = null;
+        if (text.equals(getResources().getString(R.string.version_new))) {
+            intent = new Intent(TestMainActivity.this, VersionActivity.class);
+        } else if (text.equals(getResources().getString(R.string.touch))) {
+            intent = new Intent(TestMainActivity.this, TouchTest.class);
+        } else if (text.equals(getResources().getString(R.string.light_new))) {
+            intent = new Intent(TestMainActivity.this, LcdActivity.class);
+        } else if (text.equals(getResources().getString(R.string.camera))) {
+            intent = new Intent(TestMainActivity.this, CameraPreview.class);
+        } else if (text.equals(getResources().getString(R.string.wifi))) {
+            intent = new Intent(TestMainActivity.this, WifiTestActiviy.class);
+        }else if (text.equals(getResources().getString(R.string.gps))) {
+            intent = new Intent(TestMainActivity.this, GpsTest.class);
+        }else if (text.equals(getResources().getString(R.string.speak))) {
+            intent = new Intent(TestMainActivity.this, RingtoneActivity.class);
+        }else if (text.equals(getResources().getString(R.string.mic_title))) {
+            intent = new Intent(TestMainActivity.this, MikeTest.class);
+        }else if (text.equals(getResources().getString(R.string.sim_title))) {
+            intent = new Intent(TestMainActivity.this, SimDetectActivity.class);
+        }else if (text.equals(getResources().getString(R.string.dual_new))) {
+            intent = new Intent(TestMainActivity.this, DialerTestActivity.class);
+        }else if (text.equals(getResources().getString(R.string.ramromTest))) {
+            intent = new Intent(TestMainActivity.this, SystemMemory.class);
+        }else if (text.equals(getResources().getString(R.string.beiguang_new))) {
+            intent = new Intent(TestMainActivity.this, BrightnessTest.class);
+        }else if (text.equals(getResources().getString(R.string.test_sensor))) {
+            intent = new Intent(TestMainActivity.this, GravitySensorActivity.class);
+        }else if (text.equals(getResources().getString(R.string.test_battery))) {
+            intent = new Intent(TestMainActivity.this, BatteryTestActivity.class);
+        }else if (text.equals(getResources().getString(R.string.test_keypad))) {
+            intent = new Intent(TestMainActivity.this, KeysTestActivity.class);
+        }else if (text.equals(getResources().getString(R.string.bt))) {
+            intent = new Intent(TestMainActivity.this, BlooToothActivity.class);
+        }else if (text.equals(getResources().getString(R.string.shakeTest))) {
+            intent = new Intent(TestMainActivity.this, MotorTestActivity.class);
+        }else if (text.equals(getResources().getString(R.string.ultraviolet))) {
+            intent = new Intent(TestMainActivity.this, UltravioletMonitorActivity.class);
+        }else if (text.equals(getResources().getString(R.string.dsp))) {
+            intent = new Intent(TestMainActivity.this, DSPActivity.class);
+        }else if (text.equals(getResources().getString(R.string.heartrate))) {
+            intent = new Intent(TestMainActivity.this, HeartRate.class);
+        }
+
+        if (intent != null) {
+            intent.putExtra("running", false);
+            startActivityForResult(intent, 0);
+        }
+
+    }
+
+    public String[] getList() {
+        String[] listTem = {getString(R.string.version_new), getString(R.string.touch), getString(R.string.light_new), getString(R.string.camera),
+                getString(R.string.wifi), getString(R.string.gps), getString(R.string.speak), getString(R.string.mic_title),
+                getString(R.string.sim_title), getString(R.string.dual_new), getString(R.string.ramromTest), getString(R.string.beiguang_new),
+                getString(R.string.test_sensor), getString(R.string.test_battery)};
+        return listTem;
+    }
+
+    List<String> testResultList;
+    private List<String> getArray() {
+        List<String> list = new ArrayList<String>();
+        testResultList = new ArrayList<String>();
+        for (int i = 0; i < getList().length; i++) {
+            list.add(getList()[i]);
+            testResultList.add(sharedPreferencesArr[i]);
+        }
+        if (FTUtils.isLieBao()) {
+            list.add(getString(R.string.test_keypad));
+            testResultList.add("keys");
+        } else if (FTUtils.isSugar()) {
+            list.add(getString(R.string.test_keypad));
+            list.add(getString(R.string.bt));
+            list.add(getString(R.string.shakeTest));
+            list.add(getString(R.string.ultraviolet));
+
+            testResultList.add("keys");
+            testResultList.add("bt");
+            testResultList.add("vibrator");
+            testResultList.add("Ultraviolet");
+        } else if (FTUtils.isS06()) {
+            // s06 添加dsp测试
+            list.add(getString(R.string.hall));
+            list.add(getString(R.string.bt));
+            list.add(getString(R.string.dsp));
+            list.add(getString(R.string.heartrate));
+
+            testResultList.add("keys");
+            testResultList.add("bt");
+            testResultList.add("dsp");
+            testResultList.add("heartrate");
+        }
+        stateArr = new String[testResultList.size()];
+        return list;
+    }
+
+
+    String[] sharedPreferencesArr = {"version", "touch", "lcd", "camera", "wifi", "gps", "speak", "mic", "sim", "dialer",
+            "watchmemory", "light", "Gsensor", "watchbattery"/*, "keys", "bt", "vibrator", "Ultraviolet", "dsp"*/};
+
+}
diff --git a/app/src/main/java/mobile/miki/mainui/TestMainList.java b/app/src/main/java/mobile/miki/mainui/TestMainList.java
new file mode 100644 (file)
index 0000000..e463f07
--- /dev/null
@@ -0,0 +1,332 @@
+package mobile.miki.mainui;
+
+import android.app.AlertDialog;
+import android.content.ComponentName;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import mobile.miki.BaseActivity;
+import mobile.miki.MyApplication;
+import mobile.miki.R;
+import mobile.miki.VersionActivity;
+import mobile.miki.ageingmode.AgeingModeActivity;
+import mobile.miki.flow.DownLoad;
+import mobile.miki.util.FTUtils;
+
+/*add tyy  程序主入口 */
+public class TestMainList extends BaseActivity implements OnClickListener {
+       public static final String FORMAT_AND_FACTORY_RESET = "com.android.internal.os.storage.FORMAT_AND_FACTORY_RESET";
+       private static final String MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
+       private LinearLayout moblietest;
+       private LinearLayout pcbatest;
+       private LinearLayout engineermodetest;
+       private LinearLayout  ageingmodetest;
+       private LinearLayout mapcopytools;
+       private TextView Factory_test_title;
+       private LinearLayout download_mode;
+       private LinearLayout dial;
+       private LinearLayout flagPosition;
+
+       @Override
+       protected void onCreate(Bundle savedInstanceState) {
+               // TODO Auto-generated method stub
+               super.onCreate(savedInstanceState);
+               MyApplication.getInstance().addActivity(this);
+               setContentView(R.layout.dig_layout_testlist);
+
+               pcbatest = (LinearLayout) findViewById(R.id.pcba_test);
+               moblietest = (LinearLayout) findViewById(R.id.moblie_test);
+               engineermodetest = (LinearLayout) findViewById(R.id.engineer_mode_test);
+               ageingmodetest = (LinearLayout) findViewById(R.id.ageing_mode);
+               mapcopytools = (LinearLayout) findViewById(R.id.map_copy_tools);
+               Factory_test_title = (TextView) findViewById(R.id.Factory_test_title);
+               download_mode = (LinearLayout) findViewById(R.id.download_mode);
+               dial = (LinearLayout)findViewById(R.id.dail);
+               download_mode.setVisibility(View.GONE);
+               flagPosition = (LinearLayout)findViewById(R.id.flagposiontion);
+               if (!FTUtils.isSugar()) {
+                       flagPosition.setVisibility(View.GONE);
+               }
+
+               pcbatest.setOnClickListener(this);
+               moblietest.setOnClickListener(this);
+               engineermodetest.setOnClickListener(this);
+               ageingmodetest.setOnClickListener(this);
+               mapcopytools.setOnClickListener(this);
+               Factory_test_title.setOnClickListener(this);
+               download_mode.setOnClickListener(this);
+               dial.setOnClickListener(this);
+               flagPosition.setOnClickListener(this);
+
+//             Log.d(TAG, "onCreate");
+               Settings.System.putInt(getContentResolver(), "mobile.miki.FactoryModeRunning", 1);
+       }
+
+       @Override
+       protected void onResume() {
+               // TODO Auto-generated method stub
+               super.onResume();
+       }
+
+       @Override
+       protected void onDestroy() {
+               // TODO Auto-generated method stub
+               Settings.System.putInt(getContentResolver(), "mobile.miki.FactoryModeRunning", 0);
+//             Log.d(TAG, "onDestroy");
+               super.onDestroy();
+       }
+
+       @Override
+       protected void onPause() {
+               // TODO Auto-generated method stub
+               super.onPause();
+       }
+
+       @Override
+       public void onClick(View view) {
+               // TODO Auto-generated method stub
+               Intent intent;
+               switch (view.getId()) {
+               case R.id.pcba_test:
+                       intent = new Intent(TestMainList.this, VersionActivity.class);
+                       intent.putExtra("running", true);
+                       intent.putExtra("pcbatest", true);
+                       startActivityForResult(intent, 0);
+                       break;
+               case R.id.moblie_test:
+                       intent = new Intent(TestMainList.this, VersionActivity.class);
+                       intent.putExtra("running", true);
+                       intent.putExtra("pcbatest", false);
+                       startActivityForResult(intent, 0);
+                       break;
+               case R.id.engineer_mode_test:
+                       intent = new Intent(TestMainList.this, TestMainActivity.class);
+                       intent.putExtra("home", false);
+                       startActivity(intent);
+                       break;
+               case R.id.ageing_mode:
+                       intent = new Intent(TestMainList.this, AgeingModeActivity.class);
+                       startActivity(intent);
+                       break;
+               case R.id.map_copy_tools:
+
+                       Intent i = new Intent();
+                       i.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$PrivacySettingsActivity"));
+                       if (FTUtils.isSugar()) {
+                               i.setComponent(new ComponentName("com.eqc.settings", "com.eqc.settings.ResetActivity"));
+                       }
+                       startActivity(i);
+
+                       break;
+
+               case R.id.Factory_test_title:
+                       long secondTime = System.currentTimeMillis();
+                       // 判断每次点击的事件间隔是否符合连击的有效范围
+                       // 不符合时,有可能是连击的开始,否则就仅仅是单击
+                       if (secondTime - firstTime <= interval) {
+
+                               ++count1;
+                       } else {
+
+                               count1 = 1;
+                       }
+                       // 延迟,用于判断用户的点击操作是否结束
+                       delay();
+                       firstTime = secondTime;
+                       break;
+
+               case R.id.download_mode:
+                       intent = new Intent(TestMainList.this, DownLoad.class);
+                       startActivity(intent);
+                       break;
+               case R.id.dail:
+                       intent = new Intent();
+                       intent.setComponent(new ComponentName("com.android.dialer", "com.android.dialer.DialtactsActivity"));
+                       startActivity(intent);
+                       break;
+               case R.id.flagposiontion:
+                       intent = new Intent(TestMainList.this, FlagPositionActivity.class);
+                       startActivity(intent);
+                       break;
+
+               default:
+                       break;
+               }
+       }
+
+       private int count1 = 0;
+       private long firstTime = 0;
+       private Timer delayTimer;
+       private TimerTask task;
+       private long interval = 500;
+       private static final String ALLOW_INSTALL_ACTION = "intent.action.xls.allow.install";
+
+       // 延迟时间是连击的时间间隔有效范围
+       private void delay() {
+               if (task != null) {
+                       task.cancel();
+               }
+
+               task = new TimerTask() {
+                       @Override
+                       public void run() {
+
+                               Message message = new Message();
+                               message.what = 0;
+                               mHandler.sendMessage(message);
+
+                       }
+               };
+               delayTimer = new Timer();
+               delayTimer.schedule(task, interval);
+       }
+
+       private Handler mHandler = new Handler() {
+               public void handleMessage(android.os.Message msg) {
+
+                       switch (msg.what) {
+                       case 0:// 点击事件结束后的事件处理
+                               if (count1 >= 8) {
+
+                                       delayTimer.cancel();
+                                       count1 = 0;
+                                       Intent intent = new Intent(TestMainList.this, ModeSelectActivity.class);
+                                       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                       startActivity(intent);
+//                                     Intent intent=new Intent();
+//                                     intent.setAction(ALLOW_INSTALL_ACTION);
+//                                     sendBroadcast(intent);
+//                                     sendBroadcast(intent);
+//                                     Toast.makeText(TestMainList.this, "已经解除安装限制!", Toast.LENGTH_SHORT).show();
+//                                     chooseDialog();
+                               }
+                               super.handleMessage(msg);
+                       }
+               };
+       };
+
+       @Override
+       public void onBackPressed() {
+               MyApplication.getInstance().exit();
+
+               finish();
+               android.os.Process.killProcess(android.os.Process.myPid());
+               System.exit(0);
+       }
+       
+       
+       private void chooseDialog() {
+               int closeCarRecord = 0;
+               try {
+                       closeCarRecord = Settings.System.getInt(getContentResolver(), "closeCarRecord");
+               } catch (SettingNotFoundException e) {
+                       e.printStackTrace();
+               }
+               final HashMap<Integer,Boolean> sboolean = new HashMap<Integer,Boolean>();
+               if(closeCarRecord == 0) {
+                       sboolean.put(0, false);
+               } else if (closeCarRecord == 1){
+                       sboolean.put(0, true);
+               }
+               sboolean.put(1, false);
+               final ArrayList<String> list = new ArrayList<String>();
+               final String[] items = { "关闭行车记录仪","解除安装限制"};
+               boolean[] selected = new boolean[items.length];
+               for (int i = 0; i < selected.length; i++) {
+                       selected[i] =  sboolean.get(i);
+                       //selected[i] = false;
+               }
+               AlertDialog.Builder builder = new AlertDialog.Builder(TestMainList.this);
+               builder.setIcon(R.drawable.ic_launcher);
+               builder.setTitle("请选择");
+               builder.setMultiChoiceItems(items, selected,
+                               new DialogInterface.OnMultiChoiceClickListener() {
+
+                                       @Override
+                                       public void onClick(DialogInterface dialog, int which,
+                                                       boolean isChecked) {
+                                               // TODO Auto-generated method stub
+                                               if (isChecked) {
+                                                       list.add(items[which]);
+                                               } else {
+                                                       list.remove(items[which]);
+                                               }
+                                               sboolean.put(which, isChecked);
+                                               
+                                       }
+                               });
+               builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                       @Override
+                       public void onClick(DialogInterface dialog, int which) {
+                               if(list.size() == 0) {
+                                       Settings.System.putInt(getContentResolver(),
+                                                       "closeCarRecord", 0);
+                               } else if(list.size() > 0) {
+                                       if(list.size() == 1) {
+                                               if(list.get(0).equals(items[0])) {
+                                                       closeRecord();
+                                               }else {
+                                                       openRecord();
+                                                       allowInstall();
+                                               }
+                                       } else if(list.size() == 2) {
+                                               closeRecord();
+                                               allowInstall();
+                                       }
+                               }
+
+                       }
+               });
+               builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+
+                       @Override
+                       public void onClick(DialogInterface dialog, int which) {
+
+                       }
+               });
+               builder.create().show();
+       }
+       
+       /**
+        * 关闭行车记录仪
+        */
+       private void closeRecord() {
+               Settings.System.putInt(getContentResolver(),
+                               "closeCarRecord", 1);
+       }
+       
+       /**
+        * 打开行车记录仪
+        */
+       private void openRecord() {
+               Settings.System.putInt(getContentResolver(),
+                               "closeCarRecord", 0);
+       }
+       
+       /**
+        * 解决安全限制
+        */
+       private void allowInstall() {
+               Intent intent=new Intent();
+               intent.setAction(ALLOW_INSTALL_ACTION);
+               sendBroadcast(intent);
+               sendBroadcast(intent);
+               Toast.makeText(TestMainList.this, "已经解除安装限制!", Toast.LENGTH_SHORT).show();
+       }
+
+}
diff --git a/app/src/main/java/mobile/miki/touchscreen/SurfaceViewAcitvity.java b/app/src/main/java/mobile/miki/touchscreen/SurfaceViewAcitvity.java
new file mode 100644 (file)
index 0000000..1844545
--- /dev/null
@@ -0,0 +1,330 @@
+package mobile.miki.touchscreen;\r
+\r
+import android.app.Activity;\r
+import android.content.Context;\r
+import android.graphics.Canvas;\r
+import android.graphics.Color;\r
+import android.graphics.Paint;\r
+import android.graphics.Path;\r
+import android.os.Bundle;\r
+import android.util.Log;\r
+import android.view.MotionEvent;\r
+import android.view.SurfaceHolder;\r
+import android.view.SurfaceHolder.Callback;\r
+import android.view.SurfaceView;\r
+\r
+public class SurfaceViewAcitvity extends Activity {\r
+\r
+       MyView mAnimView = null;\r
+\r
+       private Thread blinker;\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               mAnimView = new MyView(this);\r
+               setContentView(mAnimView);\r
+       }\r
+       \r
+\r
+       public class MyView extends SurfaceView implements Callback, Runnable {\r
+\r
+               public static final int TIME_IN_FRAME = 50;\r
+\r
+               Paint mPaint12 = null;\r
+               Paint mPaint34 = null;\r
+               Paint mTextPaint = null;\r
+               Paint mLinePaint = null;\r
+               SurfaceHolder mSurfaceHolder = null;\r
+\r
+               boolean mRunning = false;\r
+\r
+               Canvas mCanvas = null;\r
+\r
+               boolean mIsRunning = false;\r
+\r
+               private Path mPath;\r
+\r
+               private float mposX, mposY;\r
+\r
+               private float circleR = 60;\r
+               private float circleX1 = 90, circleY1 = 90;\r
+               private float circleX2 = 390, circleY2 = 770;\r
+               private float circleX3 = 390, circleY3 = 90;\r
+               private float circleX4 = 90, circleY4 = 770;\r
+\r
+               private int flag1 = 0;\r
+               private int flag2 = 0;\r
+               private int flag3 = 0;\r
+               private int flag4 = 0;\r
+\r
+               private boolean isFirstStepOver = false;\r
+               private boolean isSecondStepOver = false;\r
+\r
+               public MyView(Context context) {\r
+                       super(context);\r
+                       this.setFocusable(true);\r
+                       this.setFocusableInTouchMode(true);\r
+                       mSurfaceHolder = this.getHolder();\r
+                       mSurfaceHolder.addCallback(this);\r
+                       \r
+                       init();\r
+               }\r
+               \r
+               private void init(){\r
+                       mCanvas = new Canvas();\r
+\r
+                       mPaint12 = new Paint();\r
+                       mPaint12.setColor(Color.BLUE);\r
+                       mPaint12.setAntiAlias(true);\r
+                       mPaint12.setStyle(Paint.Style.FILL_AND_STROKE);\r
+                       //mPaint.setStyle(Paint.Style.STROKE);\r
+                       mPaint12.setStrokeCap(Paint.Cap.ROUND);\r
+                       mPaint12.setStrokeWidth(1);\r
+                       \r
+                       mPaint34 = new Paint();\r
+                       mPaint34.setColor(Color.GRAY);\r
+                       mPaint34.setAntiAlias(true);\r
+                       mPaint34.setStyle(Paint.Style.FILL_AND_STROKE);\r
+                       //mPaint.setStyle(Paint.Style.STROKE);\r
+                       mPaint34.setStrokeCap(Paint.Cap.ROUND);\r
+                       mPaint34.setStrokeWidth(1);\r
+                       \r
+                       mPath = new Path();\r
+                       mTextPaint = new Paint();\r
+                       mTextPaint.setColor(Color.RED);\r
+                       mTextPaint.setTextSize(15);\r
+\r
+                       mLinePaint = new Paint();\r
+                       mLinePaint.setColor(Color.RED);\r
+                       mLinePaint.setStyle(Paint.Style.STROKE);\r
+                       mLinePaint.setStrokeWidth(5);\r
+                       \r
+               }\r
+\r
+               @Override\r
+               public boolean onTouchEvent(MotionEvent event) {\r
+                       Log.i("wxm", "---wxm---onTouchEvent---flag=" + flag1 + ", flag2="\r
+                                       + flag2);\r
+                       int action = event.getAction();\r
+                       float x = event.getX();\r
+                       float y = event.getY();\r
+\r
+                       switch (action) {\r
+                       case MotionEvent.ACTION_DOWN:\r
+                               Log.i("wxm", "---wxm---ACTION_DOWN---");\r
+                               if (!isFirstStepOver) {\r
+                                       if (isInCircle1(x, y)) {\r
+                                               flag1 = 1;\r
+                                       } else if (isInCircle2(x, y)) {\r
+                                               flag2 = 1;\r
+                                       } else {\r
+                                               return true;\r
+                                       }\r
+                               } else if (!isSecondStepOver) {\r
+                                       if (isInCircle3(x, y)) {\r
+                                               flag3 = 1;\r
+                                       } else if (isInCircle4(x, y)) {\r
+                                               flag4 = 1;\r
+                                       } else {\r
+                                               return true;\r
+                                       }\r
+                               }\r
+\r
+                               mPath.moveTo(x, y);\r
+                               break;\r
+                       case MotionEvent.ACTION_MOVE:\r
+                               Log.i("wxm", "---wxm---ACTION_MOVE---");\r
+                               Log.i("wxm", "---wxm---mposX=" + mposX + ", mposY=" + mposY\r
+                                               + ", x=" + x + ", y=" + y);\r
+                               if (!isFirstStepOver) {\r
+                                       if (flag1 == 0 && flag2 == 0) {\r
+                                               return true;\r
+                                       }\r
+                                       if (isOutTheArea12(x, -y)) {\r
+                                               Log.i("wxm", "---wxm---***---");\r
+                                               mPath.reset();\r
+                                               flag1 = 0;\r
+                                               flag2 = 0;\r
+                                               break;\r
+                                       }\r
+                               } else if (!isSecondStepOver) {\r
+                                       if (flag3 == 0 && flag4 == 0) {\r
+                                               return true;\r
+                                       }\r
+                                       if (isOutTheArea34(x, -y)) {\r
+                                               Log.i("wxm", "---wxm---***---");\r
+                                               mPath.reset();\r
+                                               flag3 = 0;\r
+                                               flag4 = 0;\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                               mPath.quadTo(mposX, mposY, x, y);\r
+                               break;\r
+                       case MotionEvent.ACTION_UP:\r
+                               Log.i("wxm", "---wxm---ACTION_UP---");\r
+                               // if (isInCircle2(x, y) && flag1 == 1) {\r
+                               // Log.i("wxm", "---wxm---Circle1-->>Circle2---success---");\r
+                               // } else if (isInCircle1(x, y) && flag2 == 1) {\r
+                               // Log.i("wxm", "---wxm---Circle2-->>Circle1---success---");\r
+                               // }\r
+                               if ((isInCircle2(x, y) && flag1 == 1)\r
+                                               || (isInCircle1(x, y) && flag2 == 1)) {\r
+                                       Log.i("wxm", "---wxm---success---");\r
+                                       isFirstStepOver = true;\r
+                                       mPaint34.setColor(Color.BLUE);\r
+                               }\r
+                               if ((isInCircle3(x, y) && flag4 == 1)\r
+                                               || (isInCircle4(x, y) && flag3 == 1)) {\r
+                                       Log.i("wxm", "---wxm---success---");\r
+                                       isSecondStepOver = true;\r
+                                       SurfaceViewAcitvity.this.finish();\r
+                               }\r
+\r
+                               mPath.reset();\r
+                               flag1 = 0;\r
+                               flag2 = 0;\r
+                               flag3 = 0;\r
+                               flag4 = 0;\r
+                               break;\r
+                       }\r
+                       mposX = x;\r
+                       mposY = y;\r
+                       return true;\r
+               }\r
+\r
+               private void Draw() {\r
+                       mCanvas.drawColor(Color.WHITE);\r
+                       //mCanvas.drawPath(mPath, mLinePaint);\r
+\r
+                       mCanvas.drawText("(" + (int) mposX + "," + (int) mposY + ")", 220,\r
+                                       50, mTextPaint);\r
+                       if (!isFirstStepOver) {\r
+                               mCanvas.drawCircle(circleX1, circleY1, circleR, mPaint12);\r
+                               mCanvas.drawCircle(circleX2, circleY2, circleR, mPaint12);\r
+                               mCanvas.drawLine(0, 38, 360, 854, mPaint12);\r
+                               mCanvas.drawLine(115, 0, 480, 825, mPaint12);\r
+                       }\r
+                       if (!isSecondStepOver) {\r
+                               mCanvas.drawCircle(circleX3, circleY3, circleR, mPaint34);\r
+                               mCanvas.drawCircle(circleX4, circleY4, circleR, mPaint34);\r
+                               mCanvas.drawLine(480, 38, 120, 854, mPaint34);\r
+                               mCanvas.drawLine(365, 0, 0, 825, mPaint34);\r
+                       }\r
+                       \r
+                       mCanvas.drawPath(mPath, mLinePaint);\r
+                       \r
+                       if (isSecondStepOver) {\r
+                               mCanvas.drawText("---successfull---", 200, 420, mTextPaint);\r
+                       }\r
+\r
+               }\r
+\r
+\r
+               public boolean isInCircle1(float x, float y) {\r
+                       if (isFirstStepOver) {\r
+                               return false;\r
+                       }\r
+                       float disX1 = (x - circleX1) * (x - circleX1);\r
+                       float disY1 = (y - circleY1) * (y - circleY1);\r
+                       float disXY1 = (float) Math.sqrt(disX1 + disY1);\r
+                       return disXY1 < circleR ? true : false;\r
+               }\r
+\r
+               public boolean isInCircle2(float x, float y) {\r
+                       if (isFirstStepOver) {\r
+                               return false;\r
+                       }\r
+                       float disX2 = (x - circleX2) * (x - circleX2);\r
+                       float disY2 = (y - circleY2) * (y - circleY2);\r
+                       float disXY2 = (float) Math.sqrt(disX2 + disY2);\r
+                       return disXY2 < circleR ? true : false;\r
+               }\r
+\r
+               public boolean isOutTheArea12(float x1, float y1) {\r
+                       float s = (float) Math.sqrt(34 * 34 + 15 * 15);\r
+                       float d = (float) Math.abs(34 * x1 + 15 * y1 - 1710);\r
+\r
+                       float dis = d / s;\r
+                       return dis > circleR ? true : false;\r
+               }\r
+\r
+\r
+               public boolean isInCircle3(float x, float y) {\r
+                       if (isSecondStepOver) {\r
+                               return false;\r
+                       }\r
+                       float disX3 = (x - circleX3) * (x - circleX3);\r
+                       float disY3 = (y - circleY3) * (y - circleY3);\r
+                       float disXY3 = (float) Math.sqrt(disX3 + disY3);\r
+                       return disXY3 < circleR ? true : false;\r
+               }\r
+\r
+               public boolean isInCircle4(float x, float y) {\r
+                       if (isSecondStepOver) {\r
+                               return false;\r
+                       }\r
+                       float disX4 = (x - circleX4) * (x - circleX4);\r
+                       float disY4 = (y - circleY4) * (y - circleY4);\r
+                       float disXY4 = (float) Math.sqrt(disX4 + disY4);\r
+                       return disXY4 < circleR ? true : false;\r
+               }\r
+\r
+               public boolean isOutTheArea34(float x2, float y2) {\r
+                       float s = (float) Math.sqrt(34 * 34 + (-15) * (-15));\r
+                       float d = (float) Math.abs(34 * x2 - 15 * y2 - 14610);\r
+\r
+                       float dis = d / s;\r
+                       return dis > circleR ? true : false;\r
+               }\r
+\r
+               @Override\r
+               public void surfaceChanged(SurfaceHolder holder, int format, int width,\r
+                               int height) {\r
+\r
+               }\r
+\r
+               @Override\r
+               public void surfaceCreated(SurfaceHolder holder) {\r
+                       mIsRunning = true;\r
+                       blinker = new Thread(this);\r
+                       blinker.start();\r
+               }\r
+\r
+               @SuppressWarnings("deprecation")\r
+               @Override\r
+               public void surfaceDestroyed(SurfaceHolder holder) {\r
+                       Log.i("wxm", "---wxm---surfaceDestroyed---");\r
+                       mIsRunning = false;\r
+                       blinker = null;\r
+               }\r
+\r
+               @Override\r
+               public void run() {\r
+                       Log.i("wxm", "---wxm---run()---");\r
+                       Thread thisThread = Thread.currentThread();\r
+                       while (blinker == thisThread) {\r
+                               Log.i("wxm", "---wxm---mIsRunning=" + mIsRunning);\r
+                               long startTime = System.currentTimeMillis();\r
+\r
+                               synchronized (mSurfaceHolder) {\r
+                                       mCanvas = mSurfaceHolder.lockCanvas();\r
+                                       Draw();\r
+                                       mSurfaceHolder.unlockCanvasAndPost(mCanvas);\r
+                               }\r
+\r
+                               long endTime = System.currentTimeMillis();\r
+\r
+                               int diffTime = (int) (endTime - startTime);\r
+\r
+                               while (diffTime <= TIME_IN_FRAME) {\r
+                                       diffTime = (int) (System.currentTimeMillis() - startTime);\r
+                                       Thread.yield();\r
+                               }\r
+\r
+                       }\r
+\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/app/src/main/java/mobile/miki/touchscreen/TouchScreen_Activity.java b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_Activity.java
new file mode 100644 (file)
index 0000000..d01e53b
--- /dev/null
@@ -0,0 +1,47 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.touchscreen;\r
+\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.view.View;\r
+import android.widget.LinearLayout;\r
+\r
+import mobile.miki.BaseActivity;\r
+import mobile.miki.TouchTest;\r
+\r
+public class TouchScreen_Activity extends BaseActivity {\r
+    private LinearLayout container;\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(0x7f03002c);\r
+        //testScreenTouch(null);\r
+        testScreenTouch1(null);\r
+    }\r
+    \r
+    public void testScreenTouch(View view) {\r
+        Intent intent = new Intent(this, SurfaceViewAcitvity.class);\r
+        startActivity(intent);\r
+    }\r
+    public void testScreenTouch1(View view) {\r
+       //发送广播给systemUI全屏显示\r
+       Intent systemuiIntent = new Intent();\r
+       systemuiIntent.setAction("mobile.miki.touchscreen.TouchScreen_Activity");\r
+       systemuiIntent.putExtra("close", true);\r
+       sendBroadcast(systemuiIntent);\r
+       //end\r
+        Intent touch = new Intent(this,TouchTest.class);\r
+//        ComponentName component = new ComponentName("com.mediatek.engineermode",\r
+//                "com.mediatek.engineermode.touchscreen.TsMultiTouch");\r
+//\r
+//        touch.setComponent(component);\r
+        \r
+\r
+        this.startActivity(touch);\r
+\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/touchscreen/TouchScreen_HandWriting.java b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_HandWriting.java
new file mode 100644 (file)
index 0000000..725e1f8
--- /dev/null
@@ -0,0 +1,295 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.touchscreen;\r
+\r
+import android.app.Activity;\r
+import android.content.Context;\r
+import android.content.SharedPreferences;\r
+import android.graphics.Canvas;\r
+import android.graphics.Paint;\r
+import android.os.Bundle;\r
+import android.util.DisplayMetrics;\r
+import android.util.Log;\r
+import android.view.Menu;\r
+import android.view.MenuItem;\r
+import android.view.MotionEvent;\r
+import android.view.VelocityTracker;\r
+import android.view.View;\r
+import android.widget.Toast;\r
+\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+\r
+public class TouchScreen_HandWriting extends Activity {\r
+    public static final int ClearCanvas_ID = 1;\r
+    private String TAG;\r
+    private int mZoom;\r
+    TouchScreen_HandWriting.MyView v;\r
+\r
+    \r
+    public TouchScreen_HandWriting() {\r
+        v = null;\r
+        mZoom = 1;\r
+        TAG = "EM-TouchScreen";\r
+    }\r
+    \r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        Log.i("MTH", "onCreate start");\r
+        getWindow().setFlags(1024, 1024);\r
+        requestWindowFeature(0x1);\r
+        setContentView(new TouchScreen_HandWriting.MyView(this));\r
+        Log.i("MTH", "onCreate success");\r
+    }\r
+    \r
+    public void onResume() {\r
+        super.onResume();\r
+        Log.i("MTH", "onResume");\r
+        SharedPreferences preferences = getSharedPreferences("touch_screen_settings", 0x0);\r
+        String file = preferences.getString("filename", "N");\r
+        if(!file.equals("N")) {\r
+            String[] cmd = {"/system/bin/sh",\r
+            "-c",\r
+            "echo [ENTER_HAND_WRITING] >> " + file};\r
+            try {\r
+                int ret = TouchScreen_ShellExe.execCommand(cmd);\r
+                if(ret == 0) {\r
+                    Toast.makeText(this, "Start logging...", 0x1).show();\r
+                    return;\r
+                }\r
+                Toast.makeText(this, "Logging failed!", 0x1).show();\r
+                return;\r
+            } catch(IOException e) {\r
+                Log.e("MTH", e.toString());\r
+            }\r
+        }\r
+    }\r
+    \r
+    public void onPause() {\r
+        Log.i("MTH", "onPause");\r
+        SharedPreferences preferences = getSharedPreferences("touch_screen_settings", 0x0);\r
+        String file = preferences.getString("filename", "N");\r
+        if(!file.equals("N")) {\r
+            String[] cmd = {"/system/bin/sh",\r
+            "-c",\r
+            "echo [LEAVE_HAND_WRITING] >> " + file};\r
+            try {\r
+                int ret = TouchScreen_ShellExe.execCommand(cmd);\r
+                if(ret == 0) {\r
+                    Toast.makeText(this, "Stop logging...", 0x1).show();\r
+                } else {\r
+                    Toast.makeText(this, "Logging failed!", 0x1).show();\r
+                }\r
+            } catch(IOException e) {\r
+                Log.e("MTH", e.toString());\r
+            }\r
+        }\r
+        super.onPause();\r
+    }\r
+    @Override\r
+    public boolean onCreateOptionsMenu(Menu menu) {\r
+       super.onCreateOptionsMenu(menu);\r
+       Log.e("huguifeng","huguifeng           ");\r
+        menu.add(0, 1, 0, "Clean Table.");\r
+        return true;\r
+    }\r
+    @Override\r
+    public boolean onOptionsItemSelected(MenuItem mi) {\r
+        switch(mi.getItemId()) {\r
+            case 1:\r
+            {\r
+                v.Clear();\r
+                break;\r
+            }\r
+        }\r
+        return super.onOptionsItemSelected(mi);\r
+    }\r
+    \r
+    \r
+    \r
+    public class MyView extends View\r
+    {\r
+      ArrayList<TouchScreen_HandWriting.PT> curLine;\r
+      private boolean mCurDown;\r
+      private float mCurPressure;\r
+      private int mCurWidth;\r
+      private int mCurX;\r
+      private int mCurY;\r
+      private int mHeaderBottom;\r
+      public ArrayList<ArrayList<TouchScreen_HandWriting.PT>> mLines = new ArrayList();\r
+      private final Paint mPaint;\r
+      private final Paint mTargetPaint;\r
+      private final Paint mTextBackgroundPaint;\r
+      private final Paint mTextLevelPaint;\r
+      private final Paint.FontMetricsInt mTextMetrics = new Paint.FontMetricsInt();\r
+      private final Paint mTextPaint;\r
+      private VelocityTracker mVelocity;\r
+      public ArrayList<VelocityTracker> mVelocityList = new ArrayList();\r
+\r
+      public MyView(Context arg2) {\r
+        super(arg2);\r
+        new DisplayMetrics();\r
+        DisplayMetrics localDisplayMetrics = TouchScreen_HandWriting.this.getApplicationContext().getResources().getDisplayMetrics();\r
+        int i = localDisplayMetrics.widthPixels;\r
+        int j = localDisplayMetrics.heightPixels;\r
+        if (((480 == i) && (800 == j)) || ((800 == i) && (480 == j)))\r
+          TouchScreen_HandWriting.this.mZoom = 2;\r
+        this.mTextPaint = new Paint();\r
+        this.mTextPaint.setAntiAlias(true);\r
+        this.mTextPaint.setTextSize(10 * TouchScreen_HandWriting.this.mZoom);\r
+        this.mTextPaint.setARGB(255, 0, 0, 0);\r
+        this.mTextBackgroundPaint = new Paint();\r
+        this.mTextBackgroundPaint.setAntiAlias(false);\r
+        this.mTextBackgroundPaint.setARGB(128, 255, 255, 255);\r
+        this.mTextLevelPaint = new Paint();\r
+        this.mTextLevelPaint.setAntiAlias(false);\r
+        this.mTextLevelPaint.setARGB(192, 255, 0, 0);\r
+        this.mPaint = new Paint();\r
+        this.mPaint.setAntiAlias(true);\r
+        this.mPaint.setARGB(255, 255, 255, 255);\r
+        this.mPaint.setStyle(Paint.Style.STROKE);\r
+        this.mPaint.setStrokeWidth(2.0F);\r
+        this.mTargetPaint = new Paint();\r
+        this.mTargetPaint.setAntiAlias(false);\r
+        this.mTargetPaint.setARGB(192, 0, 255, 0);\r
+        this.mPaint.setStyle(Paint.Style.STROKE);\r
+        this.mPaint.setStrokeWidth(1.0F);\r
+      }\r
+\r
+      public void Clear()\r
+      {\r
+        Iterator localIterator = this.mLines.iterator();\r
+        while (localIterator.hasNext())\r
+          ((ArrayList)localIterator.next()).clear();\r
+        this.mLines.clear();\r
+        this.mVelocityList.clear();\r
+        invalidate();\r
+      }\r
+\r
+      protected void onDraw(Canvas canvas)\r
+      {\r
+        int i = getWidth() / 5;\r
+        int j = 1  -this.mTextMetrics.ascent;\r
+        int k = this.mHeaderBottom;\r
+        canvas.drawRect(0.0F, 0.0F, i - 1, k, this.mTextBackgroundPaint);\r
+        canvas.drawText("X: " + this.mCurX, 1.0F, j, this.mTextPaint);\r
+        canvas.drawRect(i, 0.0F, -1 + i * 2, k, this.mTextBackgroundPaint);\r
+        canvas.drawText("Y: " + this.mCurY, i + 1, j, this.mTextPaint);\r
+        canvas.drawRect(i * 2, 0.0F, -1 + i * 3, k, this.mTextBackgroundPaint);\r
+        canvas.drawRect(i * 2, 0.0F, i * 2 + this.mCurPressure * i - 1.0F, k, this.mTextLevelPaint);\r
+        canvas.drawText("Pres: " + this.mCurPressure, 1 + i * 2, j, this.mTextPaint);\r
+        canvas.drawRect(i * 3, 0.0F, -1 + i * 4, k, this.mTextBackgroundPaint);\r
+        canvas.drawRect(i * 4, 0.0F, getWidth(), k, this.mTextBackgroundPaint);\r
+        int m = 0;\r
+        \r
+               int n = 0; \r
+           \r
+               int i2;\r
+           float f1;\r
+           float f2;\r
+        if (this.mVelocity == null){\r
+          m = 0;\r
+          n = 0;\r
+        }else if (this.mVelocity != null){\r
+         m = (int)(1000.0F * Math.abs(this.mVelocity.getXVelocity()));\r
+         n = (int)(1000.0F * Math.abs(this.mVelocity.getYVelocity()));    \r
+       } \r
+        canvas.drawText("XVel: " + m, 1 + i * 3, j, this.mTextPaint);\r
+        canvas.drawText("YVel: " + n, 1 + i * 4, j, this.mTextPaint);\r
+        \r
+         for(int x= 0; x < this.mLines.size(); x ++){\r
+                 ArrayList localArrayList = (ArrayList)this.mLines.get(x);\r
+                 f1 = 0.0F;\r
+              f2 = 0.0F;\r
+              this.mPaint.setARGB(255, 0, 255, 255);\r
+              for(int y= 0; y < localArrayList.size(); y++){\r
+                 \r
+                 TouchScreen_HandWriting.PT localPT = (TouchScreen_HandWriting.PT)localArrayList.get(y);\r
+                 if(y > 0){\r
+                         canvas.drawLine(f1, f2, localPT.x.floatValue(), localPT.y.floatValue(), this.mTargetPaint);\r
+                         canvas.drawPoint(f1, f2, this.mPaint);\r
+                 }\r
+                 f1 = localPT.x.floatValue();\r
+                  f2 = localPT.y.floatValue();\r
+              }\r
+              VelocityTracker localVelocityTracker = (VelocityTracker)this.mVelocityList.get(x);\r
+              if (localVelocityTracker != null)\r
+              {\r
+                this.mPaint.setARGB(255, 255, 0, 0);\r
+                float f3 = 16.0F * localVelocityTracker.getXVelocity();\r
+                float f4 = 16.0F * localVelocityTracker.getYVelocity();\r
+                canvas.drawLine(f1, f2, f1 + f3, f2 + f4, this.mPaint);\r
+              }\r
+\r
+              //break;\r
+              canvas.drawPoint(f1, f2, this.mPaint);\r
+         }\r
+         \r
+          if (this.mCurDown)\r
+          {\r
+               canvas.drawLine(0.0F, this.mCurY, getWidth(), this.mCurY, this.mTargetPaint);\r
+               canvas.drawLine(this.mCurX, 0.0F, this.mCurX, getHeight(), this.mTargetPaint);\r
+            int i5 = (int)(255.0F * this.mCurPressure);\r
+            this.mPaint.setARGB(255, i5, 128, 255 - i5);\r
+            canvas.drawPoint(this.mCurX, this.mCurY, this.mPaint);\r
+            canvas.drawCircle(this.mCurX, this.mCurY, this.mCurWidth, this.mPaint);\r
+          }\r
+         \r
+         \r
+       // label533: \r
+      }\r
+\r
+      protected void onMeasure(int paramInt1, int paramInt2)\r
+      {\r
+        super.onMeasure(paramInt1, paramInt2);\r
+        this.mTextPaint.getFontMetricsInt(this.mTextMetrics);\r
+        this.mHeaderBottom = (2 + (-this.mTextMetrics.ascent + this.mTextMetrics.descent));\r
+        Log.i(TouchScreen_HandWriting.this.TAG, "Metrics: ascent=" + this.mTextMetrics.ascent + " descent=" + this.mTextMetrics.descent + " leading=" + this.mTextMetrics.leading + " top=" + this.mTextMetrics.top + " bottom=" + this.mTextMetrics.bottom);\r
+      }\r
+\r
+      public boolean onTouchEvent(MotionEvent paramMotionEvent) {\r
+        int i = paramMotionEvent.getAction();\r
+        if (i == MotionEvent.ACTION_DOWN) {\r
+          this.mVelocity = VelocityTracker.obtain();\r
+          this.mVelocityList.add(this.mVelocity);\r
+          this.curLine = new ArrayList();\r
+          this.mLines.add(this.curLine);\r
+        } else if(i == MotionEvent.ACTION_MOVE){\r
+            this.mVelocity.addMovement(paramMotionEvent);\r
+            this.mVelocity.computeCurrentVelocity(1);\r
+            for (int k = 0; k < paramMotionEvent.getHistorySize(); k++)\r
+              this.curLine.add(new TouchScreen_HandWriting.PT(Float.valueOf(paramMotionEvent.getHistoricalX(k)), Float.valueOf(paramMotionEvent.getHistoricalY(k))));\r
+            this.curLine.add(new TouchScreen_HandWriting.PT( Float.valueOf(paramMotionEvent.getX()), Float.valueOf(paramMotionEvent.getY())));\r
+        }\r
+ \r
+        if ((i == MotionEvent.ACTION_DOWN) || (i == MotionEvent.ACTION_MOVE)){\r
+          this.mCurDown = true;\r
+          this.mCurX = (int)paramMotionEvent.getX();\r
+          this.mCurY = (int)paramMotionEvent.getY();\r
+          this.mCurPressure = paramMotionEvent.getPressure();\r
+          this.mCurWidth = (int)(paramMotionEvent.getSize() * getWidth() / 3);\r
+          invalidate();\r
+        } else {\r
+               this.mCurDown = false;\r
+        }\r
+        return true;\r
+      }\r
+    }\r
+    \r
+    \r
+    public class PT\r
+    {\r
+      public Float x;\r
+      public Float y;\r
+\r
+      public PT(Float paramFloat1, Float arg3)\r
+      {\r
+        this.x = paramFloat1;\r
+        this.y = arg3;\r
+      }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/touchscreen/TouchScreen_ShellExe.java b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_ShellExe.java
new file mode 100644 (file)
index 0000000..4ce4f7a
--- /dev/null
@@ -0,0 +1,44 @@
+package mobile.miki.touchscreen;\r
+\r
+import android.util.Log;\r
+\r
+import java.io.BufferedReader;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+\r
+public class TouchScreen_ShellExe {\r
+    public static String ERROR = "ERROR";\r
+    private static StringBuilder sb = new StringBuilder("");\r
+    \r
+    public static String getOutput() {\r
+        return sb.toString();\r
+    }\r
+    \r
+    public static int execCommand(String[] command) throws IOException {\r
+          int i = -1;\r
+           Process localProcess = Runtime.getRuntime().exec(command);\r
+           BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localProcess.getInputStream()));\r
+           sb.delete(0, sb.length());\r
+           try\r
+           {\r
+             if (localProcess.waitFor() != 0)\r
+             {\r
+               Log.i("MTK", "exit value = " + localProcess.exitValue());\r
+               sb.append(ERROR);\r
+             }  else {\r
+               while (true)\r
+               {\r
+                 String str = localBufferedReader.readLine();\r
+                 if (str == null)\r
+                   break;\r
+                 sb.append(str);\r
+               }\r
+             }\r
+           } catch (InterruptedException localInterruptedException) {\r
+             Log.i("MTK", "exe fail " + localInterruptedException.toString());\r
+             sb.append(ERROR);\r
+             i = 0;\r
+           }\r
+               return i;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/util/CrashHandler.java b/app/src/main/java/mobile/miki/util/CrashHandler.java
new file mode 100644 (file)
index 0000000..ad5264a
--- /dev/null
@@ -0,0 +1,188 @@
+package mobile.miki.util;\r
+\r
+import android.content.Context;\r
+import android.content.pm.PackageInfo;\r
+import android.content.pm.PackageManager;\r
+import android.os.Build;\r
+import android.os.Environment;\r
+import android.os.Looper;\r
+import android.util.Log;\r
+import android.widget.Toast;\r
+\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+import java.io.PrintWriter;\r
+import java.io.StringWriter;\r
+import java.io.Writer;\r
+import java.lang.reflect.Field;\r
+import java.text.DateFormat;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+/**\r
+ * Created by Administrator on 2017/5/18.\r
+ */\r
+\r
+public class CrashHandler implements Thread.UncaughtExceptionHandler {\r
+    public static final String TAG = CrashHandler.class.getName();\r
+\r
+    // 系统默认的UncaughtException处理类\r
+    private Thread.UncaughtExceptionHandler mDefaultHandler;\r
+    // CrashHandler实例\r
+    private static CrashHandler INSTANCE = new CrashHandler();\r
+    // 程序的Context对象\r
+    private Context mContext;\r
+    // 用来存储设备信息和异常信息\r
+    private Map<String, String> infos = new HashMap<String, String>();\r
+    // 用于格式化日期,作为日志文件名的一部分\r
+    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");\r
+\r
+    /** 保证只有一个CrashHandler实例 */\r
+    private CrashHandler() {\r
+    }\r
+\r
+    /** 获取CrashHandler实例 ,单例模式 */\r
+    public static CrashHandler getInstance() {\r
+        return INSTANCE;\r
+    }\r
+\r
+    /**\r
+     * 初始化\r
+     *\r
+     * @param context\r
+     */\r
+    public void init(Context context) {\r
+        mContext = context;\r
+        // 获取系统默认的UncaughtException处理器\r
+        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();\r
+        // 设置该CrashHandler为程序的默认处理器\r
+        Thread.setDefaultUncaughtExceptionHandler(this);\r
+    }\r
+\r
+    /**\r
+     * 当UncaughtException发生时会转入该函数来处理\r
+     */\r
+    @Override\r
+    public void uncaughtException(Thread thread, Throwable ex) {\r
+        if (!handleException(ex) && mDefaultHandler != null) {\r
+            // 如果用户没有处理则让系统默认的异常处理器来处理\r
+            mDefaultHandler.uncaughtException(thread, ex);\r
+        } else {\r
+            try {\r
+                Thread.sleep(3000);\r
+            } catch (InterruptedException e) {\r
+                Log.e(TAG, "error : "+ e);\r
+            }\r
+            // 退出程序\r
+            android.os.Process.killProcess(android.os.Process.myPid());\r
+            System.exit(1);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.\r
+     *\r
+     * @param ex\r
+     * @return true:如果处理了该异常信息;否则返回false.\r
+     */\r
+    private boolean handleException(Throwable ex) {\r
+        if (ex == null) {\r
+            return false;\r
+        }\r
+        // 使用Toast来显示异常信息\r
+        new Thread() {\r
+            @Override\r
+            public void run() {\r
+                Looper.prepare();\r
+                Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出", Toast.LENGTH_LONG)\r
+                        .show();\r
+                Looper.loop();\r
+            }\r
+        }.start();\r
+        // 收集设备参数信息\r
+        collectDeviceInfo(mContext);\r
+        // 保存日志文件\r
+        saveCrashInfo2File(ex);\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     * 收集设备参数信息\r
+     *\r
+     * @param ctx\r
+     */\r
+    public void collectDeviceInfo(Context ctx) {\r
+        try {\r
+            PackageManager pm = ctx.getPackageManager();\r
+            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(),PackageManager.GET_ACTIVITIES);\r
+            if (pi != null) {\r
+                String versionName = pi.versionName == null ? null\r
+                        : pi.versionName;\r
+                String versionCode = pi.versionCode + "";\r
+                infos.put(versionName, versionName);\r
+                infos.put(versionCode, versionCode);\r
+            }\r
+        } catch (PackageManager.NameNotFoundException e) {\r
+            Log.e(TAG, "an error occured when collect package info "+e);\r
+        }\r
+        Field[] fields = Build.class.getDeclaredFields();\r
+        for (Field field : fields) {\r
+            try {\r
+                field.setAccessible(true);\r
+                infos.put(field.getName(), field.get(null).toString());\r
+                Log.d(TAG, field.getName() +  ":"  + field.get(null));\r
+            } catch (Exception e) {\r
+                Log.e(TAG, "an error occured when collect crash info,"+ e);\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     * 保存错误信息到文件中\r
+     *\r
+     * @param ex\r
+     * @return 返回文件名称,便于将文件传送到服务器\r
+     */\r
+    private String saveCrashInfo2File(Throwable ex) {\r
+\r
+        StringBuffer sb = new StringBuffer();\r
+        for (Map.Entry<String, String> entry : infos.entrySet()) {\r
+            String key = entry.getKey();\r
+            String value = entry.getValue();\r
+            sb.append(key + "=" + value );\r
+        }\r
+\r
+        Writer writer = new StringWriter();\r
+        PrintWriter printWriter = new PrintWriter(writer);\r
+        ex.printStackTrace(printWriter);\r
+        Throwable cause = ex.getCause();\r
+        while (cause != null) {\r
+            cause.printStackTrace(printWriter);\r
+            cause = cause.getCause();\r
+        }\r
+        printWriter.close();\r
+        String result = writer.toString();\r
+        sb.append(result);\r
+        try {\r
+            long timestamp = System.currentTimeMillis();\r
+            String time = formatter.format(new Date());\r
+            String fileName = "crash-" + time + "-" + timestamp + ".log";\r
+            if (Environment.getExternalStorageState().equals(\r
+                    Environment.MEDIA_MOUNTED)) {\r
+                String path = "/sdcard/crash/";\r
+                File dir = new File(path);\r
+                if (!dir.exists()) {\r
+                    dir.mkdirs();\r
+                }\r
+                FileOutputStream fos = new FileOutputStream(path + fileName);\r
+                fos.write(sb.toString().getBytes());\r
+                fos.close();\r
+            }\r
+            return fileName;\r
+        } catch (Exception e) {\r
+            Log.e(TAG, "an error occured while writing file...,"+ e);\r
+        }\r
+        return null;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/util/FTUtils.java b/app/src/main/java/mobile/miki/util/FTUtils.java
new file mode 100644 (file)
index 0000000..1a34be8
--- /dev/null
@@ -0,0 +1,197 @@
+package mobile.miki.util;\r
+\r
+import android.bluetooth.BluetoothAdapter;\r
+import android.content.Context;\r
+import android.content.SharedPreferences;\r
+import android.os.Build;\r
+import android.os.SystemProperties;\r
+import android.telephony.TelephonyManager;\r
+import android.util.Log;\r
+\r
+import java.io.FileInputStream;\r
+import java.lang.reflect.Method;\r
+import java.net.NetworkInterface;\r
+import java.net.SocketException;\r
+import java.util.Enumeration;\r
+\r
+public class FTUtils {\r
+    public static String getDISPLAY() {\r
+        return Build.DISPLAY.toUpperCase();\r
+    }\r
+\r
+    public static String getMODEL() {\r
+        return Build.MODEL.toUpperCase();\r
+    }\r
+\r
+    /**\r
+     * 展讯猎豹项目\r
+     * @return\r
+     */\r
+    public static boolean isLieBao() {\r
+        return getMODEL().contains("C02A") || getMODEL().contains("S09") || getMODEL().contains("C02");\r
+    }\r
+\r
+    /**\r
+     * sugar\r
+     * @return\r
+     */\r
+    public static boolean isSugar() {\r
+        return getDISPLAY().contains("W501CS") || getMODEL().contains("SUGAR");\r
+    }\r
+\r
+\r
+    public static void SetPreferences(Context paramContext, int paramInt,\r
+                                      Long time) {\r
+        SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest", 0);\r
+        String str = paramContext.getResources().getString(paramInt);\r
+        SharedPreferences.Editor localEditor = sharedPreferences.edit();\r
+        localEditor.putLong(str, time);\r
+        localEditor.commit();\r
+    }\r
+\r
+    public static long GetPreferences(Context paramContext, int paramInt) {\r
+        SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest", 0);\r
+        String str = paramContext.getResources().getString(paramInt);\r
+        long time = sharedPreferences.getLong(str, 0);\r
+        return time;\r
+    }\r
+\r
+    public static void SetAgeingWorktimePreferences(Context paramContext, int paramInt,\r
+                                      int time) {\r
+        SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest_workTime", 0);\r
+        String str = paramContext.getResources().getString(paramInt);\r
+        SharedPreferences.Editor localEditor = sharedPreferences.edit();\r
+        localEditor.putInt(str, time);\r
+        localEditor.commit();\r
+    }\r
+\r
+    public static int GetAgeingWorktimePreferences(Context paramContext, int paramInt) {\r
+        SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest_workTime", 0);\r
+        String str = paramContext.getResources().getString(paramInt);\r
+        int time = sharedPreferences.getInt(str, 0);\r
+        return time;\r
+    }\r
+\r
+\r
+    /**\r
+     * android 7.0及以上 (2)扫描各个网络接口获取mac地址\r
+     *\r
+     */\r
+    /**\r
+     * 获取设备HardwareAddress地址\r
+     *\r
+     * @return\r
+     */\r
+    public static String getWifiMacAddress() {\r
+        Enumeration<NetworkInterface> interfaces = null;\r
+        try {\r
+            interfaces = NetworkInterface.getNetworkInterfaces();\r
+        } catch (SocketException e) {\r
+            e.printStackTrace();\r
+        }\r
+        String hardWareAddress = null;\r
+        NetworkInterface iF = null;\r
+        if (interfaces == null) {\r
+            return null;\r
+        }\r
+        while (interfaces.hasMoreElements()) {\r
+            iF = interfaces.nextElement();\r
+            try {\r
+                hardWareAddress = bytesToString(iF.getHardwareAddress());\r
+                if (hardWareAddress != null)\r
+                    break;\r
+            } catch (SocketException e) {\r
+                e.printStackTrace();\r
+            }\r
+        }\r
+        return hardWareAddress;\r
+    }\r
+\r
+    /***\r
+     * byte转为String\r
+     *\r
+     * @param bytes\r
+     * @return\r
+     */\r
+    private static String bytesToString(byte[] bytes) {\r
+        if (bytes == null || bytes.length == 0) {\r
+            return null;\r
+        }\r
+        StringBuilder buf = new StringBuilder();\r
+        for (byte b : bytes) {\r
+            buf.append(String.format("%02X:", b));\r
+        }\r
+        if (buf.length() > 0) {\r
+            buf.deleteCharAt(buf.length() - 1);\r
+        }\r
+        return buf.toString();\r
+    }\r
+\r
+\r
+\r
+    // 展讯获取cid\r
+    public static String GetCidFromSystem() {\r
+        String cid_file = SystemProperties.get("ro.product.partitionpath", "") + "miscdata";\r
+        byte[] resCid = new byte[16];\r
+        try {\r
+            byte[] buf = new byte[50];\r
+            FileInputStream inputStream = new FileInputStream(cid_file);\r
+            int len = inputStream.read(buf);\r
+            if (len < 50) return null;\r
+            for (int i = 0; i < 16; i++) {\r
+                resCid[i] = buf[i + 28];\r
+            }\r
+            for (int i = 0; i < 16; i++) {\r
+                if ((resCid[i] >= 0x30 && resCid[i] <= 0x39) || (resCid[i] >= 0x61 && resCid[i] <= 0x7A) || (resCid[i] >= 0x41 && resCid[i] <= 0x5A)) {\r
+                    // valid\r
+                } else {\r
+                    // invalid\r
+                    for (int j = 28; j < 28 + 16; j++) {\r
+                        resCid[j] = 0x30;\r
+                    }\r
+                    break;\r
+                }\r
+            }\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+        }\r
+        String cid = new String(resCid);\r
+        Log.d("FTUtils", "get cid=" + cid);\r
+        return cid;\r
+    }\r
+\r
+    public static String getImei(Context context) {\r
+        TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);\r
+        String imei = "";\r
+\r
+        Class clazz = null;\r
+        if (manager != null) {\r
+            clazz = manager.getClass();\r
+        }\r
+\r
+        try {\r
+            Method getImei = null;\r
+            if (clazz != null) {\r
+                getImei = clazz.getDeclaredMethod("getImei");\r
+            }\r
+            if (getImei != null) {\r
+                getImei.setAccessible(true);\r
+                imei = (String) getImei.invoke(manager);\r
+            }\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+        }\r
+        return imei;\r
+    }\r
+\r
+    public static String getBtAddressViaReflection() {\r
+        return BluetoothAdapter.getDefaultAdapter().getAddress();\r
+    }\r
+\r
+    public static boolean isS06() {\r
+        if (SystemProperties.get("ro.product.brand", "").equalsIgnoreCase("SPRD") && SystemProperties.get("ro.build.version.release", "").equalsIgnoreCase("8.1.0")) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/util/IATUtils.java b/app/src/main/java/mobile/miki/util/IATUtils.java
new file mode 100644 (file)
index 0000000..50659cc
--- /dev/null
@@ -0,0 +1,59 @@
+package mobile.miki.util;
+
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.Log;
+
+import com.sprd.internal.telephony.IAtChannel;
+
+public class IATUtils {
+    private static final String TAG = "IATUtils";
+    private static IAtChannel mAtChannel = null;
+    private static String strTmp = null;
+    public static String AT_FAIL = "AT FAILED";
+    public static String AT_OK = "OK";
+    public static int mPhoneCount = 0;
+
+    public static IAtChannel getAtChannel(String serverName) {
+        return mAtChannel = IAtChannel.Stub.asInterface(ServiceManager
+                .getService(serverName));
+    }
+
+    public static String sendATCmd(String cmd, String serverName) {
+        try {
+//            mPhoneCount = TelephonyManager.getPhoneCount();
+            if (mPhoneCount == 1) {
+                serverName = "atchannel";
+            }
+            strTmp = "error service can't get";
+            mAtChannel = IAtChannel.Stub.asInterface(ServiceManager
+                    .getService(serverName));
+            if(serverName.contains("atchannel0")){
+                Log.v(TAG, "<0> mAtChannel = " + mAtChannel + " , and cmd = " + cmd);
+            }else if(serverName.contains("atchannel1")){
+                Log.v(TAG, "<1> mAtChannel = " + mAtChannel + " , and cmd = " + cmd);
+            }else{
+                Log.v(TAG, "<?> mAtChannel = " + mAtChannel + " , and cmd = " + cmd);
+            }
+            if (mAtChannel == null) {
+                Log.d(TAG, "error atchannel=null");
+                strTmp = "error service can't get";
+            } else {
+                strTmp = mAtChannel.sendAt(cmd);
+                if(serverName.contains("atchannel0")){
+                    Log.d(TAG, "<0> AT response " + strTmp);
+                }else if(serverName.contains("atchannel1")){
+                    Log.d(TAG, "<1> AT response " + strTmp);  
+                }else{
+                    Log.d(TAG, "<?> AT response " + strTmp);
+                }
+            }
+            return strTmp;
+        } catch (RemoteException e) {
+            e.printStackTrace();
+            Log.e(TAG, e.getMessage());
+        } finally {
+            return strTmp;
+        }
+    }
+}
diff --git a/app/src/main/java/mobile/miki/util/Logger.java b/app/src/main/java/mobile/miki/util/Logger.java
new file mode 100644 (file)
index 0000000..9698fbb
--- /dev/null
@@ -0,0 +1,22 @@
+package mobile.miki.util;\r
+\r
+import android.util.Log;\r
+\r
+public class Logger {\r
+    private static boolean Enable=true;\r
+    private static String DEBUG="FactoryMode";\r
+    public static void d(String logmessage)\r
+    {\r
+        if(Enable)\r
+        {\r
+            Log.i(DEBUG, logmessage);\r
+        }\r
+    }\r
+    public static void e(String logmessage)\r
+    {\r
+        if(Enable)\r
+        {\r
+            Log.e(DEBUG, logmessage);\r
+        }\r
+    }\r
+}\r
diff --git a/app/src/main/java/mobile/miki/util/StringUtil.java b/app/src/main/java/mobile/miki/util/StringUtil.java
new file mode 100644 (file)
index 0000000..0924f78
--- /dev/null
@@ -0,0 +1,125 @@
+/**\r
+  * Generated by smali2java 1.0.0.558\r
+  * Copyright (C) 2013 Hensence.com\r
+  */\r
+\r
+package mobile.miki.util;\r
+\r
+import java.util.Collection;\r
+import java.util.Dictionary;\r
+import java.util.Map;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+public class StringUtil {\r
+    \r
+    public static boolean isEmpty(Object value) {\r
+        boolean bool;\r
+        if (value == null){\r
+                return false;\r
+        }\r
+          bool = true;\r
+          if (((value instanceof String)) && (((String)value).trim().length() <= 0)){\r
+            bool = true;\r
+          } else if (((value instanceof Object[])) && (((Object[])value).length <= 0)) {\r
+            bool = true;\r
+          } else if ((value instanceof Object[])) {\r
+            Object[] arrayOfObject = (Object[])value;\r
+            for (int i = 0; i < arrayOfObject.length; i++)\r
+            {\r
+              if (arrayOfObject[i] != null)\r
+              {\r
+                bool = false;\r
+                break;\r
+              } else {\r
+                 bool = true;\r
+                 break;\r
+              }\r
+            }\r
+            \r
+          }\r
+          else if (((value instanceof Collection)) && (((Collection)value).size() <= 0))\r
+          {\r
+            bool = true;\r
+          }\r
+          else if (((value instanceof Dictionary)) && (((Dictionary)value).size() <= 0))\r
+          {\r
+            bool = true;\r
+          }\r
+          else if (((value instanceof Map)) && (((Map)value).size() <= 0))\r
+          {\r
+            bool = true;\r
+          }\r
+          else\r
+          {\r
+            bool = false;\r
+          }\r
+        \r
+        return bool;\r
+    }\r
+    \r
+    public static boolean isNotEmpty(Object value) {\r
+        return (!isEmpty(value));\r
+    }\r
+    \r
+    public static boolean isEndWith(String src, String tail) {\r
+        if(src.trim().endsWith(tail)) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+    \r
+    public static boolean isInteger(String str) {\r
+        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");\r
+        return pattern.matcher(str).matches();\r
+    }\r
+    \r
+    public static boolean isDigit(String value) {\r
+        if(value == null) {\r
+            return false;\r
+        }\r
+        Pattern pattern = Pattern.compile("-?[0-9]+");\r
+        Matcher isNum = pattern.matcher(value);\r
+        boolean localboolean1 = isNum.matches();\r
+        return true;\r
+    }\r
+    \r
+    public static boolean isDouble(String str) {\r
+        Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");\r
+        return pattern.matcher(str).matches();\r
+    }\r
+    \r
+    public static String pad(String srcStr, int length, char withChar, boolean isPadToEnd) {\r
+        if(srcStr == null) {\r
+            return srcStr;\r
+        }\r
+        if(srcStr.length() < length) {\r
+            StringBuffer sb = new StringBuffer(srcStr);\r
+            for(int i = 0x0; i < (length - srcStr.length()); i++) {\r
+                if(isPadToEnd) {\r
+                    sb.append(withChar);\r
+                    continue;\r
+                }\r
+                sb.insert(0x0, withChar);\r
+            }\r
+        }\r
+        return srcStr;\r
+    }\r
+    \r
+    public static int getInt(String srcStr) {\r
+        return getInt(srcStr, 0x0);\r
+    }\r
+    \r
+    public static int getInt(String srcStr, int defaultValue) {\r
+        if(isEmpty(srcStr)) {\r
+            return defaultValue;\r
+        }\r
+        int result = defaultValue;\r
+        try {\r
+            Double db = new Double(srcStr);\r
+        } catch(NumberFormatException e) {\r
+            e.printStackTrace();\r
+        }\r
+        return defaultValue;\r
+    }\r
+}\r
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
new file mode 100644 (file)
index 0000000..6edf3e1
--- /dev/null
@@ -0,0 +1,26 @@
+# Copyright (C) 2011 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := dbmd4_test_jni.cpp
+LOCAL_CERTIFICATE := platform
+
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+LOCAL_SHARED_LIBRARIES := liblog libandroid_runtime libtinyalsa libcutils
+LOCAL_PRELINK_MODULE := false
+
+LOCAL_MODULE := libdbmd4_test_jni
+include $(BUILD_SHARED_LIBRARY)
+
diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk
new file mode 100644 (file)
index 0000000..1678532
--- /dev/null
@@ -0,0 +1,3 @@
+#APP_ABI := armeabi armeabi-v7a arm64-v8a\r
+#APP_ABI := armeabi arm64-v8a\r
+APP_ABI := armeabi armeabi-v7a arm64-v8a
\ No newline at end of file
diff --git a/app/src/main/jni/dbmd4_test_jni.cpp b/app/src/main/jni/dbmd4_test_jni.cpp
new file mode 100644 (file)
index 0000000..331c60d
--- /dev/null
@@ -0,0 +1,182 @@
+
+
+#include <tinyalsa/asoundlib.h>
+#include <signal.h>
+#include <stdio.h>
+#include <utils/Log.h>
+#include <jni.h>
+#include <android_runtime/AndroidRuntime.h>
+#include <android_runtime/android_app_NativeActivity.h>
+
+using namespace android;
+
+static const char *classPathName = "mobile/miki/DSPActivity";
+
+static jint dbmd4_open(JNIEnv *env, jobject thiz,jint card ,jint device,jint channels,jint bits,jint rate){
+       
+       struct pcm_config config;
+       enum pcm_format format;
+       struct pcm *pcm = NULL;
+       
+       ALOGE("dbmd4_open card=%d device=%d channels=%d bits=%d rate=%d\n",card,device,channels,bits,rate);
+       memset(&config,0,sizeof(config));
+    switch (bits) {
+    case 32:
+        format = PCM_FORMAT_S32_LE;
+        break;
+    case 24:
+        format = PCM_FORMAT_S24_LE;
+        break;
+    case 16:
+        format = PCM_FORMAT_S16_LE;
+        break;
+    default:
+        ALOGE("%d bits is not supported.\n", bits);
+        return 0;
+    }
+
+    config.channels = channels;//2
+       config.format = format;//16
+    config.rate = rate;//16000
+    config.period_size = 1024;//default
+    config.period_count = 4; //default
+    config.start_threshold = 0;
+    config.stop_threshold = 0;
+    config.silence_threshold = 0;
+       
+    pcm = pcm_open(card, device, PCM_IN, &config);
+    if (!pcm || !pcm_is_ready(pcm)) {
+        ALOGE("Unable to open PCM device\n");
+        return 0;
+    }
+       
+       return (int)pcm;
+}
+
+static jint dbmd4_get_buffersize(JNIEnv *env, jobject thiz,jint dbmd4_handle){
+       int buffersize;
+       struct pcm *pcm = (struct pcm *)dbmd4_handle;
+       
+       buffersize = pcm_frames_to_bytes(pcm, pcm_get_buffer_size(pcm));
+       ALOGE("dbmd4_get_buffersize buffersize=%d\n",buffersize);
+       return buffersize;
+}
+
+static jint dbmd4_read_buffer(JNIEnv *env, jobject thiz,jint dbmd4_handle,jbyteArray buffer, jint length){
+       
+       int ret;
+       struct pcm *pcm = (struct pcm *)dbmd4_handle;
+       jbyte* buf = (jbyte *)malloc(length);
+       ALOGE("dbmd4_read_buffer buffer length=%d\n",length);
+       if(!buf){
+               ALOGE("dbmd4_read_buffer alloc buf failed\n");
+               return 0;
+       }
+       memset(buf,0,length);
+       ret = pcm_read(pcm, buf, length);
+       if(!ret){
+               ALOGE("dbmd4_read_buffer read pcm data failed\n");
+               free(buf);
+               return 0;
+       }
+       env->SetByteArrayRegion(buffer, 0, length, buf);
+       free(buf);
+       return length;
+
+}
+
+static void dbmd4_close(JNIEnv *env, jobject thiz,jint dbmd4_handle){
+       ALOGE("dbmd4_close\n");
+       pcm_close((struct pcm *)dbmd4_handle);
+}
+
+static JNINativeMethod methods[] =
+{
+    {"dbmd4_open",  "(IIIII)I", (void*)dbmd4_open },
+    {"dbmd4_get_buffersize", "(I)I", (void*)dbmd4_get_buffersize},    
+    {"dbmd4_read_buffer", "(I[BI)I", (void*)dbmd4_read_buffer },
+    {"dbmd4_close", "(I)V", (void*)dbmd4_close },
+    
+};
+
+/*
+ * Register several native methods for one class.
+ */
+static int registerNativeMethods(JNIEnv* env, const char* className,
+                                 JNINativeMethod* gMethods, int numMethods)
+{
+    jclass clazz;
+
+    clazz = env->FindClass(className);
+    if (clazz == NULL)
+    {
+        //LOGE("Native registration unable to find class '%s'", className);
+        return JNI_FALSE;
+    }
+    if (env->RegisterNatives(clazz, gMethods, numMethods) < 0)
+    {
+        //LOGE("RegisterNatives failed for '%s'", className);
+        return JNI_FALSE;
+    }
+
+    return JNI_TRUE;
+}
+
+/*
+ * Register native methods for all classes we know about.
+ *
+ * returns JNI_TRUE on success.
+ */
+static int registerNatives(JNIEnv* env)
+{
+    if (!registerNativeMethods(env, classPathName,
+                               methods, sizeof(methods) / sizeof(methods[0])))
+    {
+        return JNI_FALSE;
+    }
+
+    return JNI_TRUE;
+}
+
+
+// ----------------------------------------------------------------------------
+
+/*
+ * This is called by the VM when the shared library is first loaded.
+ */
+
+typedef union
+{
+    JNIEnv* env;
+    void* venv;
+} UnionJNIEnvToVoid;
+
+jint JNI_OnLoad(JavaVM* vm, void* reserved)
+{
+    UnionJNIEnvToVoid uenv;
+    uenv.venv = NULL;
+    jint result = -1;
+    JNIEnv* env = NULL;
+
+    //LOGI("JNI_OnLoad");
+
+    if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK)
+    {
+        //LOGE("ERROR: GetEnv failed");
+        goto bail;
+    }
+    env = uenv.env;
+
+    if (registerNatives(env) != JNI_TRUE)
+    {
+        //LOGE("ERROR: registerNatives failed");
+        goto bail;
+    }
+
+    result = JNI_VERSION_1_4;
+
+bail:
+    return result;
+}
+
+
diff --git a/app/src/main/jni/heartrate.cpp b/app/src/main/jni/heartrate.cpp
new file mode 100644 (file)
index 0000000..7f8e2a0
--- /dev/null
@@ -0,0 +1,140 @@
+\r
+\r
+#include <signal.h>\r
+#include <stdio.h>\r
+#include <utils/Log.h>\r
+#include <jni.h>\r
+#include <android_runtime/AndroidRuntime.h>\r
+#include <android_runtime/android_app_NativeActivity.h>\r
+#include <linux/ioctl.h>\r
+#include <stdlib.h>\r
+#include <fcntl.h>\r
+\r
+using namespace android;\r
+\r
+#define HEARTRATE_DEVICE_NAME         "/sys/class/input/input2/heartrate"//"/dev/heartrate"\r
+\r
+\r
+#define DEV_LOG_TAG "heartrate"\r
+#define  LOGW(...)  __android_log_print(ANDROID_LOG_WARN,DEV_LOG_TAG,__VA_ARGS__)\r
+\r
+#define HRS3300_IOCTL_BASE                             87 //0x1D\r
+#define HRS3300_IOCTL_GET_HEART_VALUE          _IO(HRS3300_IOCTL_BASE,5)\r
+\r
+static const char *classPathName = "mobile/miki/HeartRate";\r
+\r
+\r
+static jint get_heartrate(JNIEnv *env, jobject thiz)\r
+{\r
+    int fd = -1;\r
+    int ret = -1;\r
+    int heartrate = -1;\r
+\r
+    LOGW("[open_heartrate].");\r
+    fd = open(HEARTRATE_DEVICE_NAME, O_RDONLY);\r
+    if(fd < 0) \r
+    {\r
+        LOGW("Failed to open device: heart rate.");\r
+        return -1;\r
+    }\r
+    \r
+/*    if (ioctl(fd, HRS3300_IOCTL_GET_HEART_VALUE,&heartrate) < 0)\r
+    {\r
+        LOGW("get  heartrate failed.");\r
+    } else {\r
+        LOGW("get  heartrate successed.");     \r
+    }*/\r
+    close(fd);\r
+               return 80;\r
+    return heartrate;\r
+               \r
+}\r
+\r
+\r
+\r
+static JNINativeMethod methods[] =\r
+{\r
+    {"get_heartrate",  "()I", (void*)get_heartrate },\r
+    \r
+};\r
+/*\r
+ * Register several native methods for one class.\r
+ */\r
+static int registerNativeMethods(JNIEnv* env, const char* className,\r
+                                 JNINativeMethod* gMethods, int numMethods)\r
+{\r
+    jclass clazz;\r
+\r
+    clazz = env->FindClass(className);\r
+    if (clazz == NULL)\r
+    {\r
+        //LOGE("Native registration unable to find class '%s'", className);\r
+        return JNI_FALSE;\r
+    }\r
+    if (env->RegisterNatives(clazz, gMethods, numMethods) < 0)\r
+    {\r
+        //LOGE("RegisterNatives failed for '%s'", className);\r
+        return JNI_FALSE;\r
+    }\r
+\r
+    return JNI_TRUE;\r
+}\r
+\r
+/*\r
+ * Register native methods for all classes we know about.\r
+ *\r
+ * returns JNI_TRUE on success.\r
+ */\r
+static int registerNatives(JNIEnv* env)\r
+{\r
+    if (!registerNativeMethods(env, classPathName,\r
+                               methods, sizeof(methods) / sizeof(methods[0])))\r
+    {\r
+        return JNI_FALSE;\r
+    }\r
+\r
+    return JNI_TRUE;\r
+}\r
+\r
+\r
+// ----------------------------------------------------------------------------\r
+\r
+/*\r
+ * This is called by the VM when the shared library is first loaded.\r
+ */\r
+\r
+typedef union\r
+{\r
+    JNIEnv* env;\r
+    void* venv;\r
+} UnionJNIEnvToVoid;\r
+\r
+jint JNI_OnLoad(JavaVM* vm, void* reserved)\r
+{\r
+    UnionJNIEnvToVoid uenv;\r
+    uenv.venv = NULL;\r
+    jint result = -1;\r
+    JNIEnv* env = NULL;\r
+\r
+    //LOGI("JNI_OnLoad");\r
+\r
+    if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK)\r
+    {\r
+        //LOGE("ERROR: GetEnv failed");\r
+        goto bail;\r
+    }\r
+    env = uenv.env;\r
+\r
+    if (registerNatives(env) != JNI_TRUE)\r
+    {\r
+        //LOGE("ERROR: registerNatives failed");\r
+        goto bail;\r
+    }\r
+\r
+    result = JNI_VERSION_1_4;\r
+\r
+bail:\r
+    return result;\r
+}\r
+\r
+\r
diff --git a/app/src/main/res/color/button_common_fail_text.xml b/app/src/main/res/color/button_common_fail_text.xml
new file mode 100644 (file)
index 0000000..dc3fad7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:state_pressed="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:color="@color/fail" />\r
+</selector>\r
diff --git a/app/src/main/res/color/button_common_green_text.xml b/app/src/main/res/color/button_common_green_text.xml
new file mode 100644 (file)
index 0000000..7abacb6
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:state_pressed="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:color="@color/button_green_abovetext_color" />\r
+</selector>\r
diff --git a/app/src/main/res/color/button_common_red_text.xml b/app/src/main/res/color/button_common_red_text.xml
new file mode 100644 (file)
index 0000000..fa7eaf6
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:state_pressed="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:color="@color/button_white_abovetext_color" />\r
+</selector>\r
diff --git a/app/src/main/res/color/button_common_white_text.xml b/app/src/main/res/color/button_common_white_text.xml
new file mode 100644 (file)
index 0000000..f377a68
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:state_pressed="true" android:color="@color/button_press_abovetext_color" />\r
+    <item android:color="@color/button_black_abovetext_color" />\r
+</selector>\r
diff --git a/app/src/main/res/drawable-hdpi/border_view_finder.9.png b/app/src/main/res/drawable-hdpi/border_view_finder.9.png
new file mode 100644 (file)
index 0000000..c03c5eb
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/border_view_finder.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_general_default.9.png b/app/src/main/res/drawable-hdpi/btn_general_default.9.png
new file mode 100644 (file)
index 0000000..4da27f3
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_general_default.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_general_pressed.9.png b/app/src/main/res/drawable-hdpi/btn_general_pressed.9.png
new file mode 100644 (file)
index 0000000..0fcb148
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_general_pressed.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_red_n.9.png b/app/src/main/res/drawable-hdpi/btn_red_n.9.png
new file mode 100644 (file)
index 0000000..bc11ba6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_red_n.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_red_s.9.png b/app/src/main/res/drawable-hdpi/btn_red_s.9.png
new file mode 100644 (file)
index 0000000..11d94f8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_red_s.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_shot_photo_repeat.png b/app/src/main/res/drawable-hdpi/btn_shot_photo_repeat.png
new file mode 100644 (file)
index 0000000..c40f319
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_shot_photo_repeat.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_special_default.9.png b/app/src/main/res/drawable-hdpi/btn_special_default.9.png
new file mode 100644 (file)
index 0000000..8f16838
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_special_default.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/btn_special_nrolm.9.png b/app/src/main/res/drawable-hdpi/btn_special_nrolm.9.png
new file mode 100644 (file)
index 0000000..e7e9020
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/btn_special_nrolm.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/charging_bt.png b/app/src/main/res/drawable-hdpi/charging_bt.png
new file mode 100644 (file)
index 0000000..daf0885
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/charging_bt.png differ
diff --git a/app/src/main/res/drawable-hdpi/content_top_bg_02_gray_1.png b/app/src/main/res/drawable-hdpi/content_top_bg_02_gray_1.png
new file mode 100644 (file)
index 0000000..db12aaa
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/content_top_bg_02_gray_1.png differ
diff --git a/app/src/main/res/drawable-hdpi/cross.png b/app/src/main/res/drawable-hdpi/cross.png
new file mode 100644 (file)
index 0000000..a8d7c22
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/cross.png differ
diff --git a/app/src/main/res/drawable-hdpi/default_bg.png b/app/src/main/res/drawable-hdpi/default_bg.png
new file mode 100644 (file)
index 0000000..887460c
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/default_bg.png differ
diff --git a/app/src/main/res/drawable-hdpi/ex_doc.png b/app/src/main/res/drawable-hdpi/ex_doc.png
new file mode 100644 (file)
index 0000000..9bb5140
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ex_doc.png differ
diff --git a/app/src/main/res/drawable-hdpi/ex_folder.png b/app/src/main/res/drawable-hdpi/ex_folder.png
new file mode 100644 (file)
index 0000000..7fdcc07
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ex_folder.png differ
diff --git a/app/src/main/res/drawable-hdpi/focus1.png b/app/src/main/res/drawable-hdpi/focus1.png
new file mode 100644 (file)
index 0000000..2f21568
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/focus1.png differ
diff --git a/app/src/main/res/drawable-hdpi/focus2.png b/app/src/main/res/drawable-hdpi/focus2.png
new file mode 100644 (file)
index 0000000..95ea0ea
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/focus2.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_bluetooth.png b/app/src/main/res/drawable-hdpi/ic_bluetooth.png
new file mode 100644 (file)
index 0000000..7106570
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_bluetooth.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_bright.png b/app/src/main/res/drawable-hdpi/ic_bright.png
new file mode 100644 (file)
index 0000000..a6de5da
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_bright.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_charging.png b/app/src/main/res/drawable-hdpi/ic_charging.png
new file mode 100644 (file)
index 0000000..2680798
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_charging.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_cmmb.png b/app/src/main/res/drawable-hdpi/ic_cmmb.png
new file mode 100644 (file)
index 0000000..873a4e4
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_cmmb.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_cmotor.png b/app/src/main/res/drawable-hdpi/ic_cmotor.png
new file mode 100644 (file)
index 0000000..e715963
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_cmotor.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_compass.png b/app/src/main/res/drawable-hdpi/ic_compass.png
new file mode 100644 (file)
index 0000000..436472b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_compass.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_dictance.png b/app/src/main/res/drawable-hdpi/ic_dictance.png
new file mode 100644 (file)
index 0000000..068abfc
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_dictance.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_flashlight.png b/app/src/main/res/drawable-hdpi/ic_flashlight.png
new file mode 100644 (file)
index 0000000..3cc5f27
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_flashlight.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_fm.png b/app/src/main/res/drawable-hdpi/ic_fm.png
new file mode 100644 (file)
index 0000000..7c07678
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_fm.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_gps.png b/app/src/main/res/drawable-hdpi/ic_gps.png
new file mode 100644 (file)
index 0000000..4c83f9a
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_gps.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_gravity.png b/app/src/main/res/drawable-hdpi/ic_gravity.png
new file mode 100644 (file)
index 0000000..3aed4f8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_gravity.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_headset.png b/app/src/main/res/drawable-hdpi/ic_headset.png
new file mode 100644 (file)
index 0000000..74d3fd8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_headset.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_keys.png b/app/src/main/res/drawable-hdpi/ic_keys.png
new file mode 100644 (file)
index 0000000..5ce51f7
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_keys.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_launcher.png b/app/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..882eb14
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_left.png b/app/src/main/res/drawable-hdpi/ic_left.png
new file mode 100644 (file)
index 0000000..9316ae6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_left.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_light.png b/app/src/main/res/drawable-hdpi/ic_light.png
new file mode 100644 (file)
index 0000000..42c4f13
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_light.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_magnetic.png b/app/src/main/res/drawable-hdpi/ic_magnetic.png
new file mode 100644 (file)
index 0000000..c16e52c
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_magnetic.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_mcamera.png b/app/src/main/res/drawable-hdpi/ic_mcamera.png
new file mode 100644 (file)
index 0000000..080e387
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_mcamera.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_mic.png b/app/src/main/res/drawable-hdpi/ic_mic.png
new file mode 100644 (file)
index 0000000..7b41c92
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_mic.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_motor.png b/app/src/main/res/drawable-hdpi/ic_motor.png
new file mode 100644 (file)
index 0000000..c0a0792
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_motor.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_nandflash.png b/app/src/main/res/drawable-hdpi/ic_nandflash.png
new file mode 100644 (file)
index 0000000..3194f05
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_nandflash.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_needle.png b/app/src/main/res/drawable-hdpi/ic_needle.png
new file mode 100644 (file)
index 0000000..ecf648a
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_needle.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_ok.png b/app/src/main/res/drawable-hdpi/ic_ok.png
new file mode 100644 (file)
index 0000000..013d6c1
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_ok.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_phone.png b/app/src/main/res/drawable-hdpi/ic_phone.png
new file mode 100644 (file)
index 0000000..5a3dff1
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_phone.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_power.png b/app/src/main/res/drawable-hdpi/ic_power.png
new file mode 100644 (file)
index 0000000..9ecce43
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_power.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_receiver.png b/app/src/main/res/drawable-hdpi/ic_receiver.png
new file mode 100644 (file)
index 0000000..1c06e4b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_receiver.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_right.png b/app/src/main/res/drawable-hdpi/ic_right.png
new file mode 100644 (file)
index 0000000..3889c41
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_right.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_ringtone.png b/app/src/main/res/drawable-hdpi/ic_ringtone.png
new file mode 100644 (file)
index 0000000..fe97fb1
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_ringtone.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_screen.png b/app/src/main/res/drawable-hdpi/ic_screen.png
new file mode 100644 (file)
index 0000000..180c4f6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_screen.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_sdcard.png b/app/src/main/res/drawable-hdpi/ic_sdcard.png
new file mode 100644 (file)
index 0000000..2537b6b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_sdcard.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_signal.png b/app/src/main/res/drawable-hdpi/ic_signal.png
new file mode 100644 (file)
index 0000000..03360f8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_signal.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_sim.png b/app/src/main/res/drawable-hdpi/ic_sim.png
new file mode 100644 (file)
index 0000000..def9fd8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_sim.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_touch_screan.png b/app/src/main/res/drawable-hdpi/ic_touch_screan.png
new file mode 100644 (file)
index 0000000..8bd56a0
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_touch_screan.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_touch_screan1.png b/app/src/main/res/drawable-hdpi/ic_touch_screan1.png
new file mode 100644 (file)
index 0000000..8bd56a0
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_touch_screan1.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_tv.png b/app/src/main/res/drawable-hdpi/ic_tv.png
new file mode 100644 (file)
index 0000000..2be27aa
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_tv.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_update_launcher.png b/app/src/main/res/drawable-hdpi/ic_update_launcher.png
new file mode 100644 (file)
index 0000000..5a86292
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_update_launcher.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_version.png b/app/src/main/res/drawable-hdpi/ic_version.png
new file mode 100644 (file)
index 0000000..e0b2620
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_version.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_wifi.png b/app/src/main/res/drawable-hdpi/ic_wifi.png
new file mode 100644 (file)
index 0000000..2e75a11
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_wifi.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_phone.png b/app/src/main/res/drawable-hdpi/icon_phone.png
new file mode 100644 (file)
index 0000000..1347b73
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-hdpi/list_line.9.png b/app/src/main/res/drawable-hdpi/list_line.9.png
new file mode 100644 (file)
index 0000000..0839204
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/list_line.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/pic1.jpg b/app/src/main/res/drawable-hdpi/pic1.jpg
new file mode 100644 (file)
index 0000000..268e230
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pic1.jpg differ
diff --git a/app/src/main/res/drawable-hdpi/pic2.jpg b/app/src/main/res/drawable-hdpi/pic2.jpg
new file mode 100644 (file)
index 0000000..29943ce
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pic2.jpg differ
diff --git a/app/src/main/res/drawable-hdpi/pic3.jpg b/app/src/main/res/drawable-hdpi/pic3.jpg
new file mode 100644 (file)
index 0000000..e299c00
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pic3.jpg differ
diff --git a/app/src/main/res/drawable-hdpi/pic4.jpg b/app/src/main/res/drawable-hdpi/pic4.jpg
new file mode 100644 (file)
index 0000000..38891b9
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pic4.jpg differ
diff --git a/app/src/main/res/drawable-hdpi/pic5.jpg b/app/src/main/res/drawable-hdpi/pic5.jpg
new file mode 100644 (file)
index 0000000..ff7f002
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pic5.jpg differ
diff --git a/app/src/main/res/drawable-hdpi/point.png b/app/src/main/res/drawable-hdpi/point.png
new file mode 100644 (file)
index 0000000..235caea
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/point.png differ
diff --git a/app/src/main/res/drawable-hdpi/popup_bg_line.9.png b/app/src/main/res/drawable-hdpi/popup_bg_line.9.png
new file mode 100644 (file)
index 0000000..d60166c
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/popup_bg_line.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/sd_shengji.png b/app/src/main/res/drawable-hdpi/sd_shengji.png
new file mode 100644 (file)
index 0000000..c9d4451
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sd_shengji.png differ
diff --git a/app/src/main/res/drawable-hdpi/set_normal.png b/app/src/main/res/drawable-hdpi/set_normal.png
new file mode 100644 (file)
index 0000000..e895d56
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/set_normal.png differ
diff --git a/app/src/main/res/drawable-hdpi/set_pressed.png b/app/src/main/res/drawable-hdpi/set_pressed.png
new file mode 100644 (file)
index 0000000..4563e1d
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/set_pressed.png differ
diff --git a/app/src/main/res/drawable-hdpi/setting_title_bg.9.png b/app/src/main/res/drawable-hdpi/setting_title_bg.9.png
new file mode 100644 (file)
index 0000000..1ca7558
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/setting_title_bg.9.png differ
diff --git a/app/src/main/res/drawable-hdpi/target.png b/app/src/main/res/drawable-hdpi/target.png
new file mode 100644 (file)
index 0000000..f9f51b5
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/target.png differ
diff --git a/app/src/main/res/drawable-hdpi/uncharging_bt.png b/app/src/main/res/drawable-hdpi/uncharging_bt.png
new file mode 100644 (file)
index 0000000..39669db
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/uncharging_bt.png differ
diff --git a/app/src/main/res/drawable-hdpi/vumeter.png b/app/src/main/res/drawable-hdpi/vumeter.png
new file mode 100644 (file)
index 0000000..ff87f2e
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/vumeter.png differ
diff --git a/app/src/main/res/drawable-ldpi/default_bg.png b/app/src/main/res/drawable-ldpi/default_bg.png
new file mode 100644 (file)
index 0000000..887460c
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/default_bg.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_bluetooth.png b/app/src/main/res/drawable-ldpi/ic_bluetooth.png
new file mode 100644 (file)
index 0000000..7c7f411
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_bluetooth.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_cmmb.png b/app/src/main/res/drawable-ldpi/ic_cmmb.png
new file mode 100644 (file)
index 0000000..6eea464
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_cmmb.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_cmotor.png b/app/src/main/res/drawable-ldpi/ic_cmotor.png
new file mode 100644 (file)
index 0000000..5cf189a
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_cmotor.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_dictance.png b/app/src/main/res/drawable-ldpi/ic_dictance.png
new file mode 100644 (file)
index 0000000..efa5f53
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_dictance.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_flashlight.png b/app/src/main/res/drawable-ldpi/ic_flashlight.png
new file mode 100644 (file)
index 0000000..3314adc
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_flashlight.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_fm.png b/app/src/main/res/drawable-ldpi/ic_fm.png
new file mode 100644 (file)
index 0000000..e026a8d
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_fm.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_gps.png b/app/src/main/res/drawable-ldpi/ic_gps.png
new file mode 100644 (file)
index 0000000..73d2a63
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_gps.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_gravity.png b/app/src/main/res/drawable-ldpi/ic_gravity.png
new file mode 100644 (file)
index 0000000..7d8ba50
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_gravity.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_headset.png b/app/src/main/res/drawable-ldpi/ic_headset.png
new file mode 100644 (file)
index 0000000..f4cabab
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_headset.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_keys.png b/app/src/main/res/drawable-ldpi/ic_keys.png
new file mode 100644 (file)
index 0000000..b95b780
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_keys.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_launcher.png b/app/src/main/res/drawable-ldpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..18689f6
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_launcher.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_light.png b/app/src/main/res/drawable-ldpi/ic_light.png
new file mode 100644 (file)
index 0000000..0ef6720
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_light.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_magnetic.png b/app/src/main/res/drawable-ldpi/ic_magnetic.png
new file mode 100644 (file)
index 0000000..3513855
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_magnetic.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_mcamera.png b/app/src/main/res/drawable-ldpi/ic_mcamera.png
new file mode 100644 (file)
index 0000000..509d7e9
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_mcamera.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_mic.png b/app/src/main/res/drawable-ldpi/ic_mic.png
new file mode 100644 (file)
index 0000000..61f98c9
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_mic.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_motor.png b/app/src/main/res/drawable-ldpi/ic_motor.png
new file mode 100644 (file)
index 0000000..a228686
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_motor.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_nandflash.png b/app/src/main/res/drawable-ldpi/ic_nandflash.png
new file mode 100644 (file)
index 0000000..8bb43c0
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_nandflash.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_ok.png b/app/src/main/res/drawable-ldpi/ic_ok.png
new file mode 100644 (file)
index 0000000..c3adb4d
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_ok.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_power.png b/app/src/main/res/drawable-ldpi/ic_power.png
new file mode 100644 (file)
index 0000000..dd9b31e
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_power.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_receiver.png b/app/src/main/res/drawable-ldpi/ic_receiver.png
new file mode 100644 (file)
index 0000000..316df00
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_receiver.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_ringtone.png b/app/src/main/res/drawable-ldpi/ic_ringtone.png
new file mode 100644 (file)
index 0000000..0f59380
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_ringtone.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_sdcard.png b/app/src/main/res/drawable-ldpi/ic_sdcard.png
new file mode 100644 (file)
index 0000000..bd7aa1d
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_sdcard.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_signal.png b/app/src/main/res/drawable-ldpi/ic_signal.png
new file mode 100644 (file)
index 0000000..5c37006
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_signal.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_sim.png b/app/src/main/res/drawable-ldpi/ic_sim.png
new file mode 100644 (file)
index 0000000..40d8fa2
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_sim.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_touch_screan.png b/app/src/main/res/drawable-ldpi/ic_touch_screan.png
new file mode 100644 (file)
index 0000000..c88ecae
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_touch_screan.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_touch_screan1.png b/app/src/main/res/drawable-ldpi/ic_touch_screan1.png
new file mode 100644 (file)
index 0000000..8bd56a0
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_touch_screan1.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_tv.png b/app/src/main/res/drawable-ldpi/ic_tv.png
new file mode 100644 (file)
index 0000000..8f9e624
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_tv.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_version.png b/app/src/main/res/drawable-ldpi/ic_version.png
new file mode 100644 (file)
index 0000000..28e544b
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_version.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_wifi.png b/app/src/main/res/drawable-ldpi/ic_wifi.png
new file mode 100644 (file)
index 0000000..5ae49da
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_wifi.png differ
diff --git a/app/src/main/res/drawable-mdpi/bg_daytime.png b/app/src/main/res/drawable-mdpi/bg_daytime.png
new file mode 100644 (file)
index 0000000..fced62b
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/bg_daytime.png differ
diff --git a/app/src/main/res/drawable-mdpi/btn_shot_photo_repeat.png b/app/src/main/res/drawable-mdpi/btn_shot_photo_repeat.png
new file mode 100644 (file)
index 0000000..31438d6
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/btn_shot_photo_repeat.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_bluetooth.png b/app/src/main/res/drawable-mdpi/ic_bluetooth.png
new file mode 100644 (file)
index 0000000..d05e08e
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_bluetooth.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_cmotor.png b/app/src/main/res/drawable-mdpi/ic_cmotor.png
new file mode 100644 (file)
index 0000000..759400f
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_cmotor.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_gps.png b/app/src/main/res/drawable-mdpi/ic_gps.png
new file mode 100644 (file)
index 0000000..35e6827
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_gps.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_gravity.png b/app/src/main/res/drawable-mdpi/ic_gravity.png
new file mode 100644 (file)
index 0000000..51fc827
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_gravity.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_keys.png b/app/src/main/res/drawable-mdpi/ic_keys.png
new file mode 100644 (file)
index 0000000..ea637ac
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_keys.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_launcher.png b/app/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..02e96b9
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_light.png b/app/src/main/res/drawable-mdpi/ic_light.png
new file mode 100644 (file)
index 0000000..406e315
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_light.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_mcamera.png b/app/src/main/res/drawable-mdpi/ic_mcamera.png
new file mode 100644 (file)
index 0000000..27ad336
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_mcamera.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_mic.png b/app/src/main/res/drawable-mdpi/ic_mic.png
new file mode 100644 (file)
index 0000000..6b87cc3
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_mic.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_motor.png b/app/src/main/res/drawable-mdpi/ic_motor.png
new file mode 100644 (file)
index 0000000..0ee1af0
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_motor.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_ok.png b/app/src/main/res/drawable-mdpi/ic_ok.png
new file mode 100644 (file)
index 0000000..1f78770
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_ok.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_phone.png b/app/src/main/res/drawable-mdpi/ic_phone.png
new file mode 100644 (file)
index 0000000..9496457
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_phone.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_tv.png b/app/src/main/res/drawable-mdpi/ic_tv.png
new file mode 100644 (file)
index 0000000..5dc8fee
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_tv.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_wifi.png b/app/src/main/res/drawable-mdpi/ic_wifi.png
new file mode 100644 (file)
index 0000000..25c1187
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_wifi.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_bluetooth.png b/app/src/main/res/drawable-xhdpi/ic_bluetooth.png
new file mode 100644 (file)
index 0000000..143bd48
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_bluetooth.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_phone.png b/app/src/main/res/drawable-xhdpi/ic_phone.png
new file mode 100644 (file)
index 0000000..e97836c
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_phone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_wifi.png b/app/src/main/res/drawable-xhdpi/ic_wifi.png
new file mode 100644 (file)
index 0000000..bf13030
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_wifi.png differ
diff --git a/app/src/main/res/drawable/button_common_green_bg.xml b/app/src/main/res/drawable/button_common_green_bg.xml
new file mode 100644 (file)
index 0000000..19dd410
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:drawable="@drawable/btn_general_pressed" />\r
+    <item android:state_pressed="true" android:drawable="@drawable/btn_general_pressed" />\r
+    <item android:drawable="@drawable/btn_special_default" />\r
+</selector>\r
diff --git a/app/src/main/res/drawable/button_common_red_bg.xml b/app/src/main/res/drawable/button_common_red_bg.xml
new file mode 100644 (file)
index 0000000..a25e79c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:drawable="@drawable/btn_red_s" />\r
+    <item android:state_pressed="true" android:drawable="@drawable/btn_red_s" />\r
+    <item android:drawable="@drawable/btn_red_n" />\r
+</selector>\r
diff --git a/app/src/main/res/drawable/button_common_white_bg.xml b/app/src/main/res/drawable/button_common_white_bg.xml
new file mode 100644 (file)
index 0000000..1f13e0f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true" android:drawable="@drawable/btn_general_pressed" />\r
+    <item android:state_pressed="true" android:drawable="@drawable/btn_general_pressed" />\r
+    <item android:drawable="@drawable/btn_general_default" />\r
+</selector>\r
diff --git a/app/src/main/res/drawable/checkbox_normal.png b/app/src/main/res/drawable/checkbox_normal.png
new file mode 100644 (file)
index 0000000..b92f394
Binary files /dev/null and b/app/src/main/res/drawable/checkbox_normal.png differ
diff --git a/app/src/main/res/drawable/checkbox_pressed.png b/app/src/main/res/drawable/checkbox_pressed.png
new file mode 100644 (file)
index 0000000..7bab5b5
Binary files /dev/null and b/app/src/main/res/drawable/checkbox_pressed.png differ
diff --git a/app/src/main/res/drawable/checkbox_style.xml b/app/src/main/res/drawable/checkbox_style.xml
new file mode 100644 (file)
index 0000000..68057ac
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_checked="true" android:drawable="@drawable/checkbox_pressed" />\r
+    <item android:state_checked="false" android:drawable="@drawable/checkbox_normal" />\r
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gs_1_d.png b/app/src/main/res/drawable/gs_1_d.png
new file mode 100644 (file)
index 0000000..c798f28
Binary files /dev/null and b/app/src/main/res/drawable/gs_1_d.png differ
diff --git a/app/src/main/res/drawable/gs_1_l.png b/app/src/main/res/drawable/gs_1_l.png
new file mode 100644 (file)
index 0000000..1e6cc7c
Binary files /dev/null and b/app/src/main/res/drawable/gs_1_l.png differ
diff --git a/app/src/main/res/drawable/gs_1_r.png b/app/src/main/res/drawable/gs_1_r.png
new file mode 100644 (file)
index 0000000..fca2984
Binary files /dev/null and b/app/src/main/res/drawable/gs_1_r.png differ
diff --git a/app/src/main/res/drawable/gs_1_u.png b/app/src/main/res/drawable/gs_1_u.png
new file mode 100644 (file)
index 0000000..96e5c24
Binary files /dev/null and b/app/src/main/res/drawable/gs_1_u.png differ
diff --git a/app/src/main/res/drawable/gs_2_d.png b/app/src/main/res/drawable/gs_2_d.png
new file mode 100644 (file)
index 0000000..c90c5db
Binary files /dev/null and b/app/src/main/res/drawable/gs_2_d.png differ
diff --git a/app/src/main/res/drawable/gs_2_l.png b/app/src/main/res/drawable/gs_2_l.png
new file mode 100644 (file)
index 0000000..2446ef4
Binary files /dev/null and b/app/src/main/res/drawable/gs_2_l.png differ
diff --git a/app/src/main/res/drawable/gs_2_r.png b/app/src/main/res/drawable/gs_2_r.png
new file mode 100644 (file)
index 0000000..b30485f
Binary files /dev/null and b/app/src/main/res/drawable/gs_2_r.png differ
diff --git a/app/src/main/res/drawable/gs_2_u.png b/app/src/main/res/drawable/gs_2_u.png
new file mode 100644 (file)
index 0000000..f28cd14
Binary files /dev/null and b/app/src/main/res/drawable/gs_2_u.png differ
diff --git a/app/src/main/res/drawable/gs_center.png b/app/src/main/res/drawable/gs_center.png
new file mode 100644 (file)
index 0000000..25bedec
Binary files /dev/null and b/app/src/main/res/drawable/gs_center.png differ
diff --git a/app/src/main/res/drawable/half_corner_bg.xml b/app/src/main/res/drawable/half_corner_bg.xml
new file mode 100644 (file)
index 0000000..eb05e7c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<shape\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <corners android:radius="5.0dip" />\r
+    <solid android:color="#ffffffff" />\r
+    <stroke android:width="1.0dip" android:color="#ffcccccc" />\r
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_batterytest.png b/app/src/main/res/drawable/ic_batterytest.png
new file mode 100644 (file)
index 0000000..5be29e4
Binary files /dev/null and b/app/src/main/res/drawable/ic_batterytest.png differ
diff --git a/app/src/main/res/drawable/ic_bglighttest.png b/app/src/main/res/drawable/ic_bglighttest.png
new file mode 100644 (file)
index 0000000..e8c9f24
Binary files /dev/null and b/app/src/main/res/drawable/ic_bglighttest.png differ
diff --git a/app/src/main/res/drawable/ic_imeisntest.png b/app/src/main/res/drawable/ic_imeisntest.png
new file mode 100644 (file)
index 0000000..3d23712
Binary files /dev/null and b/app/src/main/res/drawable/ic_imeisntest.png differ
diff --git a/app/src/main/res/drawable/ic_lcd.png b/app/src/main/res/drawable/ic_lcd.png
new file mode 100644 (file)
index 0000000..0af0ecb
Binary files /dev/null and b/app/src/main/res/drawable/ic_lcd.png differ
diff --git a/app/src/main/res/drawable/ic_otgtest.png b/app/src/main/res/drawable/ic_otgtest.png
new file mode 100644 (file)
index 0000000..defcb8f
Binary files /dev/null and b/app/src/main/res/drawable/ic_otgtest.png differ
diff --git a/app/src/main/res/drawable/ic_phone.png b/app/src/main/res/drawable/ic_phone.png
new file mode 100644 (file)
index 0000000..9496457
Binary files /dev/null and b/app/src/main/res/drawable/ic_phone.png differ
diff --git a/app/src/main/res/drawable/ic_ramromtest.png b/app/src/main/res/drawable/ic_ramromtest.png
new file mode 100644 (file)
index 0000000..01f81dc
Binary files /dev/null and b/app/src/main/res/drawable/ic_ramromtest.png differ
diff --git a/app/src/main/res/drawable/listpress.xml b/app/src/main/res/drawable/listpress.xml
new file mode 100644 (file)
index 0000000..121bcab
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>  \r
+<selector xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <item android:state_focused="true">  \r
+        <color android:color="@color/press_color"/>  \r
+    </item>  \r
+    <item android:state_pressed="true">  \r
+        <color android:color="@color/press_color"/>  \r
+    </item>  \r
+    <item android:state_focused="false" android:state_pressed="false">  \r
+       <color android:color="@color/bg_color"/>  \r
+    </item>  \r
+    <item>  \r
+       <color android:color="@color/bg_color"/>  \r
+    </item>  \r
+</selector> \r
diff --git a/app/src/main/res/drawable/test_set_bg.xml b/app/src/main/res/drawable/test_set_bg.xml
new file mode 100644 (file)
index 0000000..76007d7
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >\r
+    <item android:state_pressed="true" android:drawable="@drawable/set_normal"></item>\r
+       <item android:drawable="@drawable/set_pressed"></item>\r
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644 (file)
index 0000000..71a7e89
--- /dev/null
@@ -0,0 +1,27 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    xmlns:tools="http://schemas.android.com/tools"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    >\r
+\r
+    <RelativeLayout\r
+        android:id="@+id/st"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="match_parent"\r
+        android:background="#ffffff"\r
+         >\r
+    </RelativeLayout>\r
+\r
+    <FrameLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_margin="20dp" >\r
+        \r
+        <SeekBar \r
+            android:id="@+id/seekBrightness"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="40dp"\r
+            />\r
+    </FrameLayout>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/ageing_mode_activity.xml b/app/src/main/res/layout/ageing_mode_activity.xml
new file mode 100644 (file)
index 0000000..034ed33
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="wrap_content"\r
+    android:orientation="vertical" >\r
+\r
+\r
+    <include layout="@layout/ageing_mode_select" />"\r
+\r
+    <GridView\r
+        android:id="@+id/gridview"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:numColumns="3"\r
+        />\r
+    \r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="0dp"\r
+        android:layout_marginTop="0dp"\r
+        android:layout_weight="1.0"\r
+        android:gravity="left"\r
+        android:orientation="horizontal" >\r
+\r
+\r
+    </LinearLayout>\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/ageing_mode_select.xml b/app/src/main/res/layout/ageing_mode_select.xml
new file mode 100644 (file)
index 0000000..56cc70f
--- /dev/null
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical"\r
+    android:layout_marginTop="20dp"\r
+    android:layout_marginBottom="10dp" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:gravity="center"\r
+        android:orientation="horizontal" >\r
+\r
+        <TextView\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:text="测试模式" />\r
+\r
+        <RadioGroup\r
+            android:id="@+id/radiogroup_mode"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <RadioButton\r
+                android:id="@+id/test_mode1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:textSize="24sp"\r
+                android:text="单项" />\r
+\r
+            <RadioButton\r
+                android:id="@+id/test_mode2"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:textSize="24sp"\r
+                android:text="循环" />\r
+        </RadioGroup>\r
+    </LinearLayout>\r
+\r
+    \r
+    <TextView\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:text="测试时间(单位 小时):" />\r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:gravity="center"\r
+        android:orientation="horizontal" >\r
+\r
+        <RadioGroup\r
+            android:id="@+id/radiogroup_time"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <RadioButton\r
+                android:id="@+id/test_time1"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1"\r
+                android:textSize="24sp"\r
+                android:text="2" />\r
+\r
+            <RadioButton\r
+                android:id="@+id/test_time2"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1"\r
+                android:textSize="24sp"\r
+                android:text="4" />\r
+            \r
+            <RadioButton\r
+                android:id="@+id/test_time3"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1"\r
+                android:textSize="24sp"\r
+                android:text="8" />\r
+            <RadioButton\r
+                android:id="@+id/test_time4"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1"\r
+                android:textSize="24sp"\r
+                android:text="无限" />\r
+        </RadioGroup>\r
+    </LinearLayout>\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/batterytest.xml b/app/src/main/res/layout/batterytest.xml
new file mode 100644 (file)
index 0000000..a05223e
--- /dev/null
@@ -0,0 +1,151 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    xmlns:tools="http://schemas.android.com/tools"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="#FFFFFF" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:background="#FFFFFF"\r
+        android:orientation="vertical"\r
+        tools:context=".BatteryTestActivity" >\r
+\r
+        <ImageView\r
+            android:id="@+id/imageView"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:layout_gravity="center_horizontal"\r
+            android:layout_marginTop="30dp"\r
+            android:background="@drawable/uncharging_bt"\r
+            android:visibility="gone" />\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_gravity="center_horizontal"\r
+            android:orientation="horizontal" >\r
+\r
+            <TextView\r
+                android:id="@+id/bt_status"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_gravity="center_horizontal"\r
+                android:text="@string/battery_status"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+\r
+            <TextView\r
+                android:id="@+id/bt_usb_ac"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_gravity="center_horizontal"\r
+                android:text="@string/bt_empty"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <TextView\r
+                android:id="@+id/battery_voltage"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/battery_v"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+\r
+            <TextView\r
+                android:id="@+id/battery_voltage_cus"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/bt_empty"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <TextView\r
+                android:id="@+id/temperature"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/battery_temp"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+\r
+            <TextView\r
+                android:id="@+id/temperature_cus"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/bt_empty"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <TextView\r
+                android:id="@+id/textView"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/battery_level"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+\r
+            <TextView\r
+                android:id="@+id/bt_level"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/bt_empty"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+\r
+            <TextView\r
+                android:id="@+id/textView3"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/battery_health"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+\r
+            <TextView\r
+                android:id="@+id/battery_health"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/bt_empty"\r
+                android:textSize="25sp"\r
+                android:textColor="@color/black" />\r
+        </LinearLayout>\r
+\r
+        <include\r
+            android:layout_alignParentBottom="true"\r
+            android:layout_centerHorizontal="true"\r
+            layout="@layout/success_fail"\r
+            android:visibility="gone" />\r
+    </LinearLayout>\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/bglight_test_layout.xml b/app/src/main/res/layout/bglight_test_layout.xml
new file mode 100644 (file)
index 0000000..89c3123
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent">\r
+\r
+    <Button\r
+        android:id="@+id/button_left"\r
+        android:layout_width="200.0dip"\r
+        android:layout_height="100.0dip"\r
+        android:clickable="true"\r
+        android:text="@string/bgLightStrong" />\r
+\r
+    <Button\r
+        android:id="@+id/button_right"\r
+        android:layout_width="200.0dip"\r
+        android:layout_height="100.0dip"\r
+        android:layout_toRightOf="@+id/button_left"\r
+        android:clickable="true"\r
+        android:text="@string/bgLightWeak" />\r
+\r
+    <include\r
+        layout="@layout/success_fail"\r
+       />\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/blooteeth_layout.xml b/app/src/main/res/layout/blooteeth_layout.xml
new file mode 100644 (file)
index 0000000..a2021b9
--- /dev/null
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg"\r
+    android:orientation="vertical" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout1"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"\r
+        android:gravity="center"\r
+        android:visibility="gone" >\r
+\r
+        <Button\r
+            android:id="@+id/button1"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:onClick="openBlueTooth"\r
+            android:text="@string/blOpen" />\r
+\r
+        <Button\r
+            android:id="@+id/button2"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:onClick="scanDevice"\r
+            android:text="@string/blScan" />\r
+    </LinearLayout>\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout2"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_above="@+id/linearLayout1"\r
+        android:layout_alignParentTop="true"\r
+        android:layout_centerHorizontal="true"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+\r
+        <ImageView\r
+            android:id="@+id/imageView1"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:src="@drawable/ic_bluetooth" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout3"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:gravity="center" >\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout4"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/textView1"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/blState"\r
+                    android:textColor="@drawable/black" />\r
+\r
+                <TextView\r
+                    android:id="@+id/textView2"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/colon"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout5"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/tvState"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout6"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:background="@drawable/white"\r
+            android:gravity="center"\r
+            android:orientation="vertical" >\r
+\r
+            <Button\r
+                android:id="@+id/button3"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:onClick="scanDevice"\r
+                android:text="@string/reScan" />\r
+\r
+            <ListView\r
+                android:id="@+id/lvDevice"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:background="@drawable/grey"\r
+                android:cacheColorHint="#00000000" />\r
+        </LinearLayout>\r
+    </LinearLayout>\r
+\r
+    <include\r
+        layout="@layout/success_fail"\r
+        android:visibility="gone"/>\r
+     <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/bluethooth_test_layouat.xml b/app/src/main/res/layout/bluethooth_test_layouat.xml
new file mode 100644 (file)
index 0000000..d2f474f
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:background="@android:color/white"\r
+     >\r
+     \r
+    \r
+    \r
+    <TextView \r
+      android:layout_centerHorizontal="true"\r
+        android:textColor="#000"\r
+        android:textSize="22sp"\r
+       android:layout_marginTop="20dp"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/bt_tip_new"       \r
+        />\r
+    \r
+    <Button \r
+        android:id="@+id/test"\r
+        android:layout_width="150dp"\r
+        android:layout_height="90dp"\r
+        android:text="@string/bluetootheTest"\r
+               android:layout_centerInParent="true"\r
+               android:onClick="testbluetooth"\r
+               android:textSize="20dp"\r
+        />\r
+    \r
+    \r
+    \r
+ <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+</RelativeLayout>\r
diff --git a/app/src/main/res/layout/camera_motor_test.xml b/app/src/main/res/layout/camera_motor_test.xml
new file mode 100644 (file)
index 0000000..9a99b1d
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_centerInParent="true"\r
+        android:orientation="horizontal" >\r
+\r
+        <LinearLayout\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:gravity="center"\r
+            android:orientation="vertical" >\r
+\r
+            <ImageView\r
+                android:id="@+id/imageView1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_gravity="center"\r
+                android:clickable="true"\r
+                android:contentDescription="@string/empty"\r
+                android:onClick="testCMotorBtnClicked"\r
+                android:src="@drawable/ic_cmotor" />\r
+\r
+            <TextView\r
+                android:id="@+id/textView1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_below="@+id/imageView1"\r
+                android:layout_gravity="center_horizontal"\r
+                android:clickable="true"\r
+                android:onClick="testCMotorBtnClicked"\r
+                android:text="@string/beginTestCmotor"\r
+                android:textColor="@drawable/black"\r
+                android:textSize="20sp" />\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:gravity="center"\r
+            android:orientation="vertical"\r
+            android:layout_marginLeft="20dp"\r
+            >\r
+\r
+            <ImageView\r
+                android:id="@+id/imageView_backcamere"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_gravity="center"\r
+                android:clickable="true"\r
+                android:contentDescription="@string/empty"\r
+                android:onClick="testBackCamereMotorBtnClicked"\r
+                android:src="@drawable/ic_cmotor" />\r
+\r
+            <TextView\r
+                android:id="@+id/textView_backcamere"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:layout_gravity="center_horizontal"\r
+                android:clickable="true"\r
+                android:onClick="testBackCamereMotorBtnClicked"\r
+                android:text="@string/beginBackCameraTestCmotor"\r
+                android:textColor="@drawable/black"\r
+                android:textSize="20sp" />\r
+        </LinearLayout>\r
+    </LinearLayout>\r
+\r
+    <include layout="@layout/urovo_layout_listline" />\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/camera_preview_layout.xml b/app/src/main/res/layout/camera_preview_layout.xml
new file mode 100644 (file)
index 0000000..d6bbb93
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/linearLayout2"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:orientation="vertical" >\r
+\r
+    <Button\r
+        android:id="@+id/change_camera"\r
+        android:layout_width="60dp"\r
+        android:layout_height="60dp"\r
+        android:layout_alignParentRight="true"\r
+        android:layout_marginTop="30dp"\r
+        android:layout_marginRight="30dp"\r
+        android:background="@drawable/button_common_green_bg"\r
+        android:text="@string/change_camera"/>\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout1"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:layout_weight="1.0"\r
+        android:orientation="vertical" >\r
+\r
+        <SurfaceView\r
+            android:id="@+id/camera_preview"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="match_parent" />\r
+    </LinearLayout>\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout3"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_weight="1.0"\r
+        android:orientation="vertical"\r
+        android:visibility="gone" >\r
+\r
+        <Button\r
+            android:id="@+id/isZoom"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:text="@string/pullStopLoop"\r
+            android:visibility="gone"\r
+            android:width="180.0dip" />\r
+    </LinearLayout>\r
+       <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_weight="1.0"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialer_test_layout.xml b/app/src/main/res/layout/dialer_test_layout.xml
new file mode 100644 (file)
index 0000000..24e1657
--- /dev/null
@@ -0,0 +1,54 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+\r
+    xmlns:tools="http://schemas.android.com/tools"\r
+    android:id="@+id/dialer_fa"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <ImageView \r
+               android:id="@+id/dialer_test" \r
+               android:clickable="true" \r
+               android:layout_width="wrap_content" \r
+               android:layout_height="wrap_content" \r
+               android:src="@drawable/ic_phone" \r
+               android:layout_centerHorizontal="true" \r
+               android:layout_centerVertical="true" \r
+               android:onClick="testLCDBtnClicked" \r
+               android:contentDescription="@string/empty" \r
+               android:visibility="gone"\r
+               />\r
+    <TextView \r
+               android:textColor="@drawable/black" \r
+               android:id="@+id/textView1" \r
+               android:clickable="true" \r
+               android:layout_width="wrap_content" \r
+               android:layout_height="wrap_content" \r
+               android:text="@string/begincall" \r
+               android:layout_below="@+id/dialer_test"\r
+               android:layout_centerHorizontal="true" \r
+               android:onClick="testLCDBtnClicked" \r
+               android:textSize="20sp"\r
+               android:visibility="gone"\r
+               />\r
+    \r
+    <TextView \r
+               android:textColor="@drawable/black" \r
+               android:layout_width="wrap_content" \r
+               android:layout_height="wrap_content" \r
+               android:text="@string/open_dialer" \r
+               android:layout_centerHorizontal="true" \r
+               android:layout_centerVertical="true" \r
+               android:textSize="20sp"\r
+               android:visibility="gone"\r
+               />\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>  \r
diff --git a/app/src/main/res/layout/dig_layout_testlist.xml b/app/src/main/res/layout/dig_layout_testlist.xml
new file mode 100644 (file)
index 0000000..f382f42
--- /dev/null
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    >\r
+\r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="match_parent"\r
+        android:background="@drawable/bg_daytime"\r
+        android:orientation="vertical">\r
+\r
+        <TextView\r
+            android:id="@+id/Factory_test_title"\r
+            style="@style/category_title_style"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="40dp"\r
+            android:gravity="center|center_horizontal"\r
+            android:text="@string/benji"\r
+            android:textSize="22sp" />\r
+\r
+        <include layout="@layout/urovo_layout_listline" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/pcba_test"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/pcbaTest"\r
+                android:textSize="22sp" />\r
+\r
+            <TextView\r
+                style="@style/content_text_medium_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:layout_marginTop="2dp"\r
+                android:gravity="center_vertical"\r
+                android:text="@string/Engineer_mode_title"\r
+                android:visibility="gone" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:id="@+id/view"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/moblie_test"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/autoTest"\r
+                android:textSize="22sp" />\r
+\r
+            <TextView\r
+                style="@style/content_text_medium_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:layout_marginTop="2dp"\r
+                android:gravity="center_vertical"\r
+                android:text="@string/Engineer_mode_title"\r
+                android:visibility="gone" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+\r
+        <LinearLayout\r
+            android:id="@+id/engineer_mode_test"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/testReport"\r
+                android:textSize="22sp" />\r
+\r
+            <TextView\r
+                style="@style/content_text_medium_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:layout_marginTop="2dp"\r
+                android:gravity="center_vertical"\r
+                android:text="@string/Engineer_mode_title"\r
+                android:visibility="gone" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+        <LinearLayout\r
+            android:id="@+id/flagposiontion"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:clickable="true"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/flag_position"\r
+                android:textSize="22sp" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/ageing_mode"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:clickable="true"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/ageing_mode"\r
+                android:textSize="22sp" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/download_mode"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:clickable="true"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/download_mode"\r
+                android:textSize="22sp" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+\r
+        <LinearLayout\r
+            android:id="@+id/map_copy_tools"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/resunme"\r
+                android:textSize="22sp" />\r
+\r
+            <TextView\r
+                style="@style/content_text_medium_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:layout_marginTop="2dp"\r
+                android:gravity="center_vertical"\r
+                android:text="@string/Engineer_mode_title"\r
+                android:visibility="gone" />\r
+        </LinearLayout>\r
+\r
+        <View\r
+            android:layout_width="match_parent"\r
+            android:layout_height="1dp"\r
+            android:background="#c0c0c0" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/dail"\r
+            android:layout_width="match_parent"\r
+            android:layout_height="0dp"\r
+            android:layout_weight="1"\r
+            android:background="@drawable/listpress"\r
+            android:clickable="true"\r
+            android:gravity="center_vertical"\r
+            android:orientation="vertical">\r
+\r
+            <TextView\r
+                style="@style/title_text_large_style"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="match_parent"\r
+                android:gravity="center"\r
+                android:text="@string/dual_new"\r
+                android:textSize="22sp" />\r
+        </LinearLayout>\r
+\r
+    </LinearLayout>\r
+</ScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/layout/download.xml b/app/src/main/res/layout/download.xml
new file mode 100644 (file)
index 0000000..71883dc
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    xmlns:tools="http://schemas.android.com/tools"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical"\r
+    tools:context="mobile.miki.flow.DownLoad">\r
+\r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:orientation="vertical">\r
+        <TextView\r
+            android:id="@+id/tv_title"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:textSize="25sp"\r
+            />\r
+\r
+       <TextView\r
+           android:id="@+id/tv_value"\r
+           android:layout_width="wrap_content"\r
+           android:layout_height="wrap_content"\r
+           android:textSize="25sp"\r
+           />\r
+\r
+    </LinearLayout>\r
+\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dsp_layout.xml b/app/src/main/res/layout/dsp_layout.xml
new file mode 100644 (file)
index 0000000..5551dcb
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:orientation="vertical" android:layout_width="match_parent"\r
+    android:layout_height="match_parent">\r
+\r
+    <Button\r
+        android:id="@+id/begain_record"\r
+        android:layout_width="120dp"\r
+        android:layout_height="120dp"\r
+        android:background="@drawable/button_common_green_bg"\r
+        android:text="@string/startRecord"/>\r
+    <Button\r
+        android:id="@+id/begain_play"\r
+        android:layout_width="120dp"\r
+        android:layout_height="120dp"\r
+        android:background="@drawable/button_common_green_bg"\r
+        android:layout_toRightOf="@id/begain_record"\r
+        android:text="@string/startPlay"/>\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/gps_test_new.xml b/app/src/main/res/layout/gps_test_new.xml
new file mode 100644 (file)
index 0000000..1f0a2d9
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical" \r
+    android:background="@android:color/white">\r
+    \r
+    <TextView \r
+        android:id="@+id/tv_gps"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textSize="20dp"\r
+        android:textColor="@color/black"\r
+        />\r
+    <TextView \r
+        android:layout_below="@+id/tv_gps"\r
+        android:id="@+id/tv_satellites"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+         android:textSize="20dp"\r
+         android:textColor="@color/black"\r
+        />\r
+    <TextView\r
+        android:layout_below="@+id/tv_satellites"\r
+        android:id="@+id/tv_result"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textSize="20dp"\r
+        android:textColor="@color/black"\r
+        />\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>\r
diff --git a/app/src/main/res/layout/gravity_sensor_layout.xml b/app/src/main/res/layout/gravity_sensor_layout.xml
new file mode 100644 (file)
index 0000000..2de5fda
--- /dev/null
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/sensor_direction"\r
+        xmlns:android="http://schemas.android.com/apk/res/android"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="match_parent"\r
+            android:layout_alignParentTop="true"\r
+            android:layout_centerHorizontal="true"\r
+            android:orientation="vertical" >\r
+\r
+            <ImageView\r
+                android:layout_marginTop="5dp"\r
+                android:id="@+id/img_gsu"\r
+                android:layout_width="50dp"\r
+                android:layout_height="50dp"\r
+                android:layout_gravity="center_horizontal"\r
+                android:src="@drawable/gs_1_u" />\r
+\r
+            <LinearLayout\r
+                android:layout_marginTop="5dp"\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content"\r
+                android:gravity="center"\r
+                android:orientation="horizontal" >\r
+\r
+                <ImageView\r
+                    android:id="@+id/img_gsl"\r
+                    android:layout_width="50dp"\r
+                    android:layout_height="50dp"\r
+                    android:layout_gravity="center_horizontal"\r
+                    android:src="@drawable/gs_1_l" />\r
+\r
+                <ImageView\r
+                    android:id="@+id/img_center"\r
+                    android:layout_width="50dp"\r
+                    android:layout_height="50dp"\r
+                    android:layout_gravity="center_horizontal|center_vertical"\r
+                    android:src="@drawable/gs_center" />\r
+\r
+                <ImageView\r
+                    android:id="@+id/img_gsr"\r
+                    android:layout_width="50dp"\r
+                    android:layout_height="50dp"\r
+                    android:layout_gravity="center_horizontal"\r
+                    android:src="@drawable/gs_1_r" />\r
+            </LinearLayout>\r
+\r
+            <RelativeLayout\r
+                android:layout_width="match_parent"\r
+                android:layout_height="wrap_content" >\r
+\r
+                <ImageView\r
+                    android:layout_centerHorizontal="true"\r
+                    android:id="@+id/img_gsd"\r
+                    android:layout_width="50dp"\r
+                    android:layout_height="50dp"\r
+                    android:layout_gravity="center_horizontal"\r
+                    android:src="@drawable/gs_1_d" />\r
+\r
+            </RelativeLayout>\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout2"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:baselineAligned="false"\r
+            android:gravity="center"\r
+            android:orientation="horizontal" >\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout8"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/textView1"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/gravityX"\r
+                    android:textColor="@drawable/black" />\r
+\r
+                <TextView\r
+                    android:id="@+id/textView4"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/colon"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout5"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center"\r
+                android:orientation="vertical" >\r
+\r
+                <TextView\r
+                    android:id="@+id/tvGraX"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/nothing"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout3"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:baselineAligned="false"\r
+            android:gravity="center"\r
+            android:orientation="horizontal" >\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout9"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/textView2"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/gravityY"\r
+                    android:textColor="@drawable/black" />\r
+\r
+                <TextView\r
+                    android:id="@+id/textView5"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/colon"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout6"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/tvGraY"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/nothing"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout4"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:baselineAligned="false"\r
+            android:gravity="center"\r
+            android:orientation="horizontal" >\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout10"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/textView3"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/gravityZ"\r
+                    android:textColor="@drawable/black" />\r
+\r
+                <TextView\r
+                    android:id="@+id/textView6"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/colon"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout7"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/tvGraZ"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/nothing"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+        </LinearLayout>\r
+    </LinearLayout>\r
+    <TextView\r
+        android:id="@+id/ins"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/ins_gsensor"\r
+        android:textColor="@drawable/black"\r
+        android:layout_centerHorizontal="true"\r
+        android:layout_marginTop="150dp"\r
+        android:textSize="14sp"\r
+         />\r
+    <TextView\r
+        android:id="@+id/xyz_value"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textColor="@drawable/black"\r
+        android:layout_centerHorizontal="true"\r
+        android:textSize="17sp"\r
+        android:layout_below="@id/ins"\r
+        />\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/grid_cell.xml b/app/src/main/res/layout/grid_cell.xml
new file mode 100644 (file)
index 0000000..ed7af0b
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:orientation="vertical" >\r
+\r
+    <ImageView\r
+        android:id="@+id/cellImage"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="wrap_content"\r
+        android:contentDescription="@+id/description"\r
+        android:src="@drawable/ic_launcher" />\r
+\r
+    <TextView\r
+        android:id="@+id/cellLabel"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_gravity="center"\r
+        android:text="@string/empty"\r
+        android:textColor="@drawable/black" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/heartrate_layout.xml b/app/src/main/res/layout/heartrate_layout.xml
new file mode 100644 (file)
index 0000000..6aea350
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:orientation="vertical" android:layout_width="match_parent"\r
+    android:layout_height="match_parent">\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/keys_test_item.xml b/app/src/main/res/layout/keys_test_item.xml
new file mode 100644 (file)
index 0000000..f5964e1
--- /dev/null
@@ -0,0 +1,7 @@
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"\r
+          android:layout_width="wrap_content"\r
+          android:layout_height="wrap_content"\r
+          android:background="@color/button_black_abovetext_color"\r
+          android:padding="10dp"\r
+          android:textColor="@color/button_white_abovetext_color"\r
+          android:textSize="30sp"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/keys_test_layout.xml b/app/src/main/res/layout/keys_test_layout.xml
new file mode 100644 (file)
index 0000000..a85fd73
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+                xmlns:app="http://schemas.android.com/apk/res-auto"\r
+                android:id="@+id/relativeLayout1"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:background="@drawable/default_bg">\r
+\r
+    <cn.davidsu.library.LineWrapContainer\r
+        android:id="@+id/view_lwc"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_margin="5dp"\r
+        app:horizontalSpace="10dp"\r
+        app:verticalSpace="10dp"/>\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"></mobile.miki.mainui.ButtonViewTwo>\r
+\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/lcd.xml b/app/src/main/res/layout/lcd.xml
new file mode 100644 (file)
index 0000000..a6b66f8
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical" >\r
+    <TextView\r
+        android:id="@+id/id_lcd"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/lcd_test_layout.xml b/app/src/main/res/layout/lcd_test_layout.xml
new file mode 100644 (file)
index 0000000..f94042e
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/lcd_fa"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <ImageView\r
+        android:id="@+id/lcd_test"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_centerHorizontal="true"\r
+        android:layout_centerVertical="true"\r
+        android:clickable="true"\r
+        android:contentDescription="@string/empty"\r
+        android:onClick="testLCDBtnClicked"\r
+        android:src="@drawable/ic_screen" />\r
+\r
+    <TextView\r
+        android:id="@+id/textView1"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_below="@+id/lcd_test"\r
+        android:layout_centerHorizontal="true"\r
+        android:clickable="true"\r
+        android:onClick="testLCDBtnClicked"\r
+        android:text="@string/beginLCDTM"\r
+        android:textColor="@drawable/black" />\r
+\r
+    <include\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"\r
+        layout="@layout/success_fail" />\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/light_sensor_layout.xml b/app/src/main/res/layout/light_sensor_layout.xml
new file mode 100644 (file)
index 0000000..0037154
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout android:id="@+id/relativeLayout1" android:background="@drawable/default_bg" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <TextView android:textColor="@drawable/black" android:id="@+id/textView3" android:background="@drawable/lightGreen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lightTip" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true" />\r
+    <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_light" android:layout_centerHorizontal="true" android:layout_centerVertical="true" />\r
+    <LinearLayout android:gravity="center" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/imageView1" android:layout_alignParentLeft="true">\r
+        <TextView android:textAppearance="?android:textAppearanceLarge" android:textColor="@drawable/black" android:id="@+id/textView1" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lightness" />\r
+        <TextView android:textAppearance="?android:textAppearanceLarge" android:textColor="@drawable/black" android:id="@+id/textView2" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/colon" />\r
+        <TextView android:textColor="@drawable/black" android:id="@+id/textLight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/defaultlightness" />\r
+    </LinearLayout>\r
+    <include android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" layout="@layout/success_fail" />\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml
new file mode 100644 (file)
index 0000000..be89b3a
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:gravity="center"\r
+    android:orientation="vertical" >\r
+\r
+    <TextView\r
+        android:id="@+id/name"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/empty"\r
+        android:textAppearance="?android:textAppearanceMedium"\r
+        android:textColor="@drawable/black" />\r
+\r
+    <TextView\r
+        android:id="@+id/describe"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/empty"\r
+        android:textColor="@drawable/black" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/magnetic_sensor_layout.xml b/app/src/main/res/layout/magnetic_sensor_layout.xml
new file mode 100644 (file)
index 0000000..f413f76
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout android:orientation="vertical" android:id="@+id/RootView" android:background="@drawable/default_bg" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <FrameLayout android:id="@+id/TopView" android:layout_width="fill_parent" android:layout_height="fill_parent">\r
+        <mobile.miki.CompassSurfaceView\r
+            android:id="@+id/Compass01"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="fill_parent"\r
+            android:scaleType="center" />\r
+        <TextView android:textSize="25.0sp" \r
+            android:textStyle="bold" \r
+            android:textColor="@*android:color/black" \r
+            android:layout_gravity="center_horizontal" \r
+            android:id="@+id/direction"\r
+            android:layout_width="wrap_content" \r
+            android:layout_height="wrap_content" \r
+            android:layout_marginTop="45.0dip" />\r
+        <LinearLayout android:layout_gravity="bottom|center" android:orientation="vertical" android:layout_width="160.0dip" android:layout_height="wrap_content" android:layout_marginBottom="60.0dip">\r
+            <TextView android:textColor="@*android:color/black" android:id="@+id/tvMegX" android:layout_width="wrap_content" android:layout_height="wrap_content" />\r
+            <TextView android:textColor="@*android:color/black" android:id="@+id/tvMegY" android:layout_width="wrap_content" android:layout_height="wrap_content" />\r
+            <TextView android:textColor="@*android:color/black" android:id="@+id/tvMegZ" android:layout_width="wrap_content" android:layout_height="wrap_content" />\r
+        </LinearLayout>\r
+        <include android:layout_centerHorizontal="true" layout="@layout/success_fail" />\r
+    </FrameLayout>\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml
new file mode 100644 (file)
index 0000000..6c70f08
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout android:orientation="vertical" android:background="@drawable/default_bg" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <GridView android:id="@+id/gvMain"\r
+        android:layout_width="fill_parent" \r
+        android:layout_height="wrap_content" \r
+        android:numColumns="3" />\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/mic_test_layout.xml b/app/src/main/res/layout/mic_test_layout.xml
new file mode 100644 (file)
index 0000000..2ecd716
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout android:id="@+id/relativeLayout1" android:background="@drawable/default_bg" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+      xmlns:android="http://schemas.android.com/apk/res/android">\r
+        <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_mic" android:contentDescription="@string/loopback" />\r
+    </LinearLayout>\r
+    <include android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" layout="@layout/success_fail" />\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/mode_select_activity.xml b/app/src/main/res/layout/mode_select_activity.xml
new file mode 100644 (file)
index 0000000..c9efdff
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent" >\r
+\r
+    <Button\r
+        android:id="@+id/engineer_button"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/engineerMode"\r
+        android:layout_centerHorizontal="true"\r
+        android:textSize="26sp" \r
+        android:layout_marginTop="30dp"/>\r
+\r
+    <Button\r
+        android:layout_below="@+id/engineer_button"\r
+        android:id="@+id/more_button"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/more"\r
+        android:layout_centerHorizontal="true"\r
+        android:textSize="26sp" \r
+        android:layout_marginTop="30dp"/>\r
+    \r
+   <Button\r
+        android:layout_below="@+id/more_button"\r
+        android:id="@+id/unbound_button"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/unbound"\r
+        android:layout_centerHorizontal="true"\r
+        android:textSize="26sp" \r
+        android:layout_marginTop="30dp"/>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/modify_imei.xml b/app/src/main/res/layout/modify_imei.xml
new file mode 100644 (file)
index 0000000..4ebe488
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout\r
+    android:orientation="vertical"\r
+    android:background="@drawable/white" \r
+    android:layout_width="fill_parent" \r
+    android:layout_height="fill_parent"\r
+    xmlns:android="http://schemas.android.com/apk/res/android">\r
+    \r
+    \r
+       <TextView \r
+           android:id="@+id/imei_sim1"\r
+           android:textColor="@drawable/black"\r
+           android:textSize="30dp"\r
+           android:layout_width="fill_parent"\r
+           android:layout_height="wrap_content"\r
+           />\r
+       \r
+       <TextView \r
+           android:id="@+id/imei_sim2"\r
+           android:textColor="@drawable/black"\r
+           android:textSize="30dp"\r
+           android:layout_width="fill_parent"\r
+           android:layout_height="wrap_content"\r
+           />\r
+    \r
+       <Button \r
+               android:textColor="@drawable/black" \r
+               android:id="@+id/imei_button1" \r
+               android:layout_width="fill_parent" \r
+               android:layout_height="wrap_content" \r
+               android:text="@string/read_imei" \r
+               android:onClick="onReadImeiBtnClicked" />\r
+       <Button \r
+               android:textColor="@drawable/black" \r
+               android:id="@+id/imei_button2" \r
+               android:layout_width="fill_parent" \r
+               android:layout_height="wrap_content" \r
+               android:text="@string/modify_imei_sim1" \r
+               android:onClick="onWriteSim1ImeiBtnClicked" />\r
+       <Button \r
+               android:textColor="@drawable/black" \r
+               android:id="@+id/imei_button3" \r
+               android:layout_width="fill_parent" \r
+               android:layout_height="wrap_content" \r
+               android:text="@string/modify_imei_sim2" \r
+               android:onClick="onWriteSim2ImeiBtnClicked" />\r
+    \r
+    \r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/motor_test_layout.xml b/app/src/main/res/layout/motor_test_layout.xml
new file mode 100644 (file)
index 0000000..9b1f29c
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+\r
+        <ImageView\r
+            android:id="@+id/imageView1"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:contentDescription="@string/shakeTest"\r
+            android:src="@drawable/ic_motor" />\r
+\r
+    </LinearLayout>\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+   \r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/record_activity.xml b/app/src/main/res/layout/record_activity.xml
new file mode 100644 (file)
index 0000000..b5476fc
--- /dev/null
@@ -0,0 +1,46 @@
+<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"\r
+    xmlns:tools="http://schemas.android.com/tools"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:paddingTop="@dimen/activity_vertical_margin"\r
+    tools:context="com.example.recordtest.MainActivity"\r
+     >\r
+    \r
+    <Button   \r
+        android:id="@+id/startRecord"  \r
+        android:layout_width="fill_parent"  \r
+        android:layout_height="wrap_content"  \r
+        android:layout_margin="5dp"\r
+      />  \r
+    <Button\r
+        android:layout_below="@+id/startRecord"\r
+        android:id="@+id/stopRecord"  \r
+        android:layout_width="fill_parent"  \r
+        android:layout_height="wrap_content"  \r
+        android:layout_margin="5dp"\r
+      />  \r
+    <Button   \r
+        android:layout_below="@+id/stopRecord"\r
+        android:id="@+id/startPlay"  \r
+        android:layout_width="fill_parent"  \r
+        android:layout_height="wrap_content" \r
+        android:layout_margin="5dp" \r
+      />  \r
+    <Button   \r
+        android:layout_below="@+id/startPlay"\r
+        android:id="@+id/stopPlay"  \r
+        android:layout_width="fill_parent"  \r
+        android:layout_height="wrap_content"  \r
+        android:layout_margin="5dp"\r
+      />  \r
+      \r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+    \r
+</RelativeLayout >\r
diff --git a/app/src/main/res/layout/ringtone_test_layout.xml b/app/src/main/res/layout/ringtone_test_layout.xml
new file mode 100644 (file)
index 0000000..6e925dd
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+        \r
+        <TextView \r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:text="@string/ring_test"\r
+            android:textSize="20sp"\r
+            android:textColor="@color/black"\r
+            />\r
+\r
+    </LinearLayout>\r
+    <Button \r
+        android:id="@+id/bt_showvolum"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:text="@string/show_volum"\r
+        android:visibility="gone"\r
+        />\r
+\r
+    <!--<SeekBar\r
+        android:id="@+id/seekbar"\r
+        android:layout_below="@+id/bt_showvolum"\r
+        style = "?android:attr/progressBarStyleHorizontal"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="30dp"\r
+        android:max = "15"\r
+        android:progress = "50"\r
+        android:background="#000000"\r
+        android:minHeight="30dp"\r
+        />-->\r
+\r
+   <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/sim_detect_layout.xml b/app/src/main/res/layout/sim_detect_layout.xml
new file mode 100644 (file)
index 0000000..086944d
--- /dev/null
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg" >\r
+\r
+    <LinearLayout\r
+        xmlns:android="http://schemas.android.com/apk/res/android"\r
+        android:id="@+id/linearLayout1"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="fill_parent"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout3"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="0.0dip"\r
+            android:layout_weight="0.5"\r
+            android:gravity="center"\r
+            android:orientation="vertical" >\r
+\r
+            <ImageView\r
+                android:id="@+id/imageView1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:contentDescription="@string/detectSim"\r
+                android:src="@drawable/ic_sim" \r
+                android:paddingBottom="20dp"\r
+                android:visibility="gone"/>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout4"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:gravity="center"\r
+                >\r
+\r
+                <LinearLayout\r
+                    android:id="@+id/linearLayout8"\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:id="@+id/textView2"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/sim1"\r
+                        android:textColor="@drawable/black" \r
+                        android:textSize="20dp"/>\r
+\r
+                    <TextView\r
+                        android:id="@+id/textView3"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/colon"\r
+                        android:textColor="@drawable/black"\r
+                        android:textSize="20dp" />\r
+                </LinearLayout>\r
+\r
+                <LinearLayout\r
+                    android:id="@+id/linearLayout6"\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:id="@+id/tvSim0"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/empty"\r
+                        android:textColor="@drawable/black"\r
+                        android:textSize="20dp" />\r
+                </LinearLayout>\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout5"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:gravity="center" \r
+                android:visibility="gone">\r
+\r
+                <LinearLayout\r
+                    android:id="@+id/linearLayout9"\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:id="@+id/textView1"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/sim2"\r
+                        android:textColor="@drawable/black"\r
+                        android:textSize="20dp" />\r
+\r
+                    <TextView\r
+                        android:id="@+id/textView4"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/colon"\r
+                        android:textColor="@drawable/black" \r
+                        android:textSize="20dp"/>\r
+                </LinearLayout>\r
+\r
+                <LinearLayout\r
+                    android:id="@+id/linearLayout7"\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:id="@+id/tvSim1"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/empty"\r
+                        android:textColor="@drawable/black"\r
+                        android:textSize="20dp" />\r
+                </LinearLayout>\r
+            </LinearLayout>\r
+            \r
+            <!-- dou -->\r
+             <LinearLayout\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:gravity="center" >\r
+                \r
+                  <LinearLayout\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/network"\r
+                        android:textColor="@drawable/black" \r
+                        android:textSize="20dp"/>\r
+\r
+                    <TextView\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/colon"\r
+                        android:textColor="@drawable/black" \r
+                        android:textSize="20dp"/>\r
+                </LinearLayout>\r
+                \r
+                 <LinearLayout\r
+                    android:layout_width="fill_parent"\r
+                    android:layout_height="fill_parent"\r
+                    android:layout_weight="1.0"\r
+                    android:gravity="center" >\r
+\r
+                    <TextView\r
+                        android:id="@+id/network"\r
+                        android:layout_width="wrap_content"\r
+                        android:layout_height="wrap_content"\r
+                        android:text="@string/empty"\r
+                        android:textColor="@drawable/black"\r
+                        android:textSize="20dp" />\r
+                </LinearLayout>\r
+            </LinearLayout>\r
+            \r
+             <Button \r
+                 android:layout_marginTop="10dp"\r
+                 android:id="@+id/voice_phone"\r
+                 android:layout_width="200dp"\r
+                 android:layout_height="80dp"\r
+                 android:text="@string/voice_phone_test"\r
+                 android:onClick="intentToVoicePhone"\r
+                 android:textSize="20dp"\r
+                 android:visibility="gone"\r
+                 />\r
+             \r
+            <!-- end -->\r
+            \r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout2"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:gravity="center"\r
+            android:orientation="horizontal"\r
+            android:visibility="gone" >\r
+\r
+            <Button\r
+                android:id="@+id/button1"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1.0"\r
+                android:onClick="detectSim1"\r
+                android:text="@string/detectSim1" />\r
+\r
+            <Button\r
+                android:id="@+id/button2"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_weight="1.0"\r
+                android:onClick="detectSim2"\r
+                android:text="@string/detectSim2" />\r
+        </LinearLayout>\r
+    </LinearLayout>\r
+\r
+      <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/sim_lock_settings.xml b/app/src/main/res/layout/sim_lock_settings.xml
new file mode 100644 (file)
index 0000000..0411f22
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <Switch android:id="@+id/switch_sim_lock" android:layout_width="fill_parent" android:layout_height="50.0dip" android:checked="false" android:text="@string/sim_lock" />\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/success_fail.xml b/app/src/main/res/layout/success_fail.xml
new file mode 100644 (file)
index 0000000..81d7093
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent" >\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout1"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_alignParentLeft="true"\r
+        android:layout_alignParentRight="true" >\r
+\r
+        <CheckBox\r
+            android:id="@+id/cbTestSuccess"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:background="@drawable/lightGreen"\r
+            android:button="@drawable/checkbox_style"\r
+            android:gravity="center"\r
+            android:onClick="testSuccess"\r
+            android:text="@string/testSucess"\r
+            android:textColor="@drawable/black" />\r
+\r
+        <CheckBox\r
+            android:id="@+id/cbTestFail"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:background="@drawable/lightOrange"\r
+            android:button="@drawable/checkbox_style"\r
+            android:gravity="center"\r
+            android:onClick="testFail"\r
+            android:text="@string/testFail"\r
+            android:textColor="@drawable/black" />\r
+    </LinearLayout>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/systemmemory_test_layout.xml b/app/src/main/res/layout/systemmemory_test_layout.xml
new file mode 100644 (file)
index 0000000..b216058
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical" >\r
+\r
+    <LinearLayout\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:orientation="vertical" >\r
+\r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+            \r
+            <TextView \r
+                android:id="@+id/total_textview1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/total_memory"\r
+                android:textSize="20sp"\r
+                />\r
+            \r
+            <TextView \r
+                android:id="@+id/total_textview2"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:textSize="20sp"\r
+                />\r
+            \r
+        </LinearLayout>\r
+        \r
+        <LinearLayout\r
+            android:layout_width="match_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="horizontal" >\r
+            \r
+            <TextView \r
+                android:id="@+id/avail_textview1"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:text="@string/avail_memory"\r
+                android:textSize="20sp"\r
+                />\r
+            \r
+            <TextView \r
+                android:id="@+id/avail_textview2"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:textSize="20sp"\r
+                />\r
+            \r
+        </LinearLayout>\r
+        \r
+        \r
+         \r
+    </LinearLayout>\r
+    \r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_brightness.xml b/app/src/main/res/layout/test_brightness.xml
new file mode 100644 (file)
index 0000000..99af1b4
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+       android:background="@android:color/white"
+    android:orientation="vertical" >
+
+    <TextView
+        android:id="@+id/MyBrightness"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:textColor="#FF0000"
+        android:textSize="32dip"
+        android:visibility="gone" />
+
+    <SeekBar
+        android:id="@+id/BrightnessSeekBar"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:max="255"
+        android:background="@android:color/holo_orange_light"
+        android:layout_marginTop="50dp"
+        android:paddingLeft="0.0dip"
+        android:paddingRight="0.0dip" 
+         android:visibility="gone">
+    </SeekBar>
+   <mobile.miki.mainui.ButtonViewTwo
+        android:id="@+id/btn_set"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true" >
+    </mobile.miki.mainui.ButtonViewTwo>
+
+    
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_mike.xml b/app/src/main/res/layout/test_mike.xml
new file mode 100644 (file)
index 0000000..931ab08
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" 
+    android:background="@android:color/white">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="12dip"
+        android:gravity="center_horizontal"
+        android:orientation="horizontal" >
+
+        <mobile.miki.VUMeter
+            android:id="@+id/uvMeter"
+            android:layout_width="200dip"
+            android:layout_height="80dip"
+            android:layout_centerInParent="true" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:background="@android:drawable/title_bar"
+        android:gravity="center_horizontal"
+        android:orientation="vertical" 
+        android:visibility="gone">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/agree"
+            android:textColor="#000000"
+            android:textSize="24.0dip" />
+    </LinearLayout>
+
+     <mobile.miki.mainui.ButtonViewTwo
+        android:id="@+id/btn_set"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true" >
+    </mobile.miki.mainui.ButtonViewTwo>
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_result.xml b/app/src/main/res/layout/test_result.xml
new file mode 100644 (file)
index 0000000..081c6ea
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="vertical">\r
+    <TextView\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textSize="38sp"\r
+        android:text="Test Report"/>\r
+    <ListView\r
+        android:id="@+id/list"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:divider="#00000000">\r
+\r
+    </ListView>\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_result_item.xml b/app/src/main/res/layout/test_result_item.xml
new file mode 100644 (file)
index 0000000..63b2b45
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:orientation="horizontal">\r
+    <TextView\r
+        android:id="@+id/tv_test_name"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textSize="25sp"\r
+        />\r
+    <TextView\r
+        android:id="@+id/tv_test_result"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:textSize="25sp"\r
+        android:layout_marginLeft="10dp"\r
+        />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/testmain_adapter.xml b/app/src/main/res/layout/testmain_adapter.xml
new file mode 100644 (file)
index 0000000..536204e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="match_parent"\r
+    android:background="@drawable/button_common_white_bg"\r
+    android:orientation="vertical">\r
+\r
+    <TextView\r
+        android:id="@+id/text_item"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="80dp"\r
+        android:textSize="25sp"\r
+        android:layout_gravity="center"\r
+        android:gravity="center"\r
+        android:text="11111111"/>\r
+\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/touchscreen.xml b/app/src/main/res/layout/touchscreen.xml
new file mode 100644 (file)
index 0000000..369801f
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <ListView android:id="@+id/ListView_TouchScreen" android:layout_width="fill_parent" android:layout_height="wrap_content" />\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/touchscreen_verification.xml b/app/src/main/res/layout/touchscreen_verification.xml
new file mode 100644 (file)
index 0000000..2160938
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <ListView android:id="@+id/ListView_TP_Verification" android:layout_width="fill_parent" android:layout_height="wrap_content" />\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/update_listitem.xml b/app/src/main/res/layout/update_listitem.xml
new file mode 100644 (file)
index 0000000..8791719
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"\r
+  xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <ImageView android:id="@+id/img" android:layout_width="48.0dip" android:layout_height="48.0dip" android:layout_margin="5.0dip" />\r
+    <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5.0dip">\r
+        <TextView android:textSize="20.0dip" android:textColor="@*android:color/black" android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" />\r
+        <RelativeLayout android:id="@+id/drawview" android:layout_width="fill_parent" android:layout_height="wrap_content">\r
+            <TextView android:textSize="16.0dip" android:textColor="#ffaaaaaa" android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" />\r
+        </RelativeLayout>\r
+    </LinearLayout>\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/update_main.xml b/app/src/main/res/layout/update_main.xml
new file mode 100644 (file)
index 0000000..1590d52
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="wrap_content"\r
+    android:layout_height="wrap_content"\r
+    android:orientation="vertical" >\r
+\r
+    <TextView\r
+        android:id="@+id/textview1"\r
+        android:layout_width="wrap_content"\r
+        android:layout_height="wrap_content"\r
+        android:layout_gravity="center_horizontal"\r
+        android:text="@string/update_make_sure_to_continue"\r
+        android:textSize="20.0sp" />\r
+\r
+    <Button\r
+        android:id="@+id/execute_master_clear"\r
+        android:layout_width="150.0dip"\r
+        android:layout_height="wrap_content"\r
+        android:layout_gravity="center_horizontal"\r
+        android:layout_marginTop="40.0dip"\r
+        android:gravity="center"\r
+        android:text="@string/update_confirm" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/urovo_ayout_button_two.xml b/app/src/main/res/layout/urovo_ayout_button_two.xml
new file mode 100644 (file)
index 0000000..16d93e3
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="50dp"\r
+    android:orientation="horizontal" >\r
+\r
+    <Button\r
+        android:id="@+id/btn_two_right"\r
+        style="@style/button_white_text"\r
+        android:layout_width="0dp"\r
+        android:layout_height="match_parent"\r
+        android:layout_weight="1"\r
+        android:background="#DA5B17"\r
+        android:text="@string/fail"\r
+        android:textColor="#fff"\r
+        android:visibility="visible" />\r
+\r
+    <Button\r
+        android:id="@+id/btn_two_left"\r
+        style="@style/button_white_text"\r
+        android:layout_width="0dp"\r
+        android:layout_height="match_parent"\r
+        android:layout_weight="1"\r
+        android:background="#797979"\r
+        android:text="@string/success"\r
+        android:textColor="#000"\r
+        android:visibility="visible" />\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/urovo_layout_lcd_tv.xml b/app/src/main/res/layout/urovo_layout_lcd_tv.xml
new file mode 100644 (file)
index 0000000..ee81d75
--- /dev/null
@@ -0,0 +1,60 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+
+    <TextView
+         android:visibility="gone"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:background="@drawable/setting_title_bg"
+        android:gravity="center_vertical"
+        android:paddingLeft="10.0dip"
+        android:textSize="20sp"
+        android:textStyle="bold" />
+
+  
+
+    <TextView
+        android:gravity="center"
+        android:id="@+id/strength"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:text="@string/lcd_result"
+        android:textColor="@color/black"
+        android:textSize="24sp" />
+    
+    <TextView
+        android:layout_below="@+id/strength"
+        android:gravity="center"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:text="@string/lcd_result_tip"
+        android:textColor="@color/black"
+        android:textSize="22sp" />
+    
+    <Button
+        android:visibility="gone"
+        android:id="@+id/start_fm"
+        android:layout_width="match_parent"
+        android:layout_height="70dp"
+        android:layout_marginTop="20dp"
+        android:text="@string/start_test"
+        android:textSize="25sp" />
+
+    <include layout="@layout/urovo_layout_listline" />
+
+    <mobile.miki.mainui.ButtonViewTwo
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:id="@+id/btn_set"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="5dp" >
+    </mobile.miki.mainui.ButtonViewTwo>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/urovo_layout_listline.xml b/app/src/main/res/layout/urovo_layout_listline.xml
new file mode 100644 (file)
index 0000000..76020e7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="wrap_content"\r
+    android:background="@drawable/list_line" >\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/urovo_layout_table.xml b/app/src/main/res/layout/urovo_layout_table.xml
new file mode 100644 (file)
index 0000000..f55f3d7
--- /dev/null
@@ -0,0 +1,58 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context=".mainui.TestMainActivity">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+
+        <RelativeLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent">
+
+            <TextView
+                android:id="@+id/ceshibaogao"
+                style="@style/category_title_style"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:text="@string/testReport"
+                android:textSize="18sp" />
+
+
+            <TextView
+                android:id="@+id/tip2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/ceshibaogao"
+                android:text="@string/tip2"
+                android:textColor="#000"
+                android:textSize="15sp" />
+
+            <Button
+                android:id="@+id/test_result"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/tip2"
+                android:layout_centerHorizontal="true"
+                android:gravity="center_horizontal"
+                android:text="@string/clear_new"
+                android:textSize="20sp" />
+
+        </RelativeLayout>
+    </LinearLayout>
+
+    <GridView
+        android:id="@+id/gridview"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:numColumns="3"
+        />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/urovo_layout_test_result.xml b/app/src/main/res/layout/urovo_layout_test_result.xml
new file mode 100644 (file)
index 0000000..b11657b
--- /dev/null
@@ -0,0 +1,195 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="859dp"
+    android:layout_height="match_parent"
+    android:background="#ccc"
+    android:orientation="vertical" >
+
+    <include layout="@layout/urovo_layout_listline" />
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" >
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:orientation="vertical" >
+
+            <!-- jiaju test -->
+
+            <LinearLayout
+                android:id="@+id/jiaoju_test"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical" >
+
+                <TextView
+                    android:id="@+id/jiaju"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:background="@drawable/setting_title_bg"
+                    android:gravity="center"
+                    android:paddingLeft="10.0dip"
+                    android:text="@string/jiaju"
+                    android:textSize="28sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:id="@+id/nv_tag"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <!-- <include layout="@layout/urovo_layout_listline" /> -->
+
+                <TextView
+                    android:id="@+id/pass"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <!-- <include layout="@layout/urovo_layout_listline" /> -->
+
+                <TextView
+                    android:id="@+id/fail"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <include layout="@layout/urovo_layout_listline" />
+
+                <TextView
+                    android:id="@+id/none"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:text="@string/none"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+                <include layout="@layout/urovo_layout_listline" />
+            </LinearLayout>
+            <!-- auto test -->
+
+            <LinearLayout
+                android:id="@+id/auto_test"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical" >
+
+                <TextView
+                    android:id="@+id/auto"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:background="@drawable/setting_title_bg"
+                    android:gravity="center"
+                    android:paddingLeft="10.0dip"
+                    android:text="@string/auto"
+                    android:textSize="28sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:id="@+id/nv_tag1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5px"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <!-- <include layout="@layout/urovo_layout_listline" /> -->
+
+                <TextView
+                    android:id="@+id/pass1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <!-- <include layout="@layout/urovo_layout_listline" /> -->
+
+                <TextView
+                    android:id="@+id/fail1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+
+                <include layout="@layout/urovo_layout_listline" />
+
+                <TextView
+                    android:id="@+id/none1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:text="@string/none1"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+                
+                  <include layout="@layout/urovo_layout_listline" />
+            </LinearLayout>
+
+           <!--  <include layout="@layout/urovo_layout_listline" /> -->
+
+            <LinearLayout
+                android:id="@+id/rf_Gs_test"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical" >
+
+                <TextView
+                    android:id="@+id/rf_Gs"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:background="@drawable/setting_title_bg"
+                    android:gravity="center"
+                    android:paddingLeft="10.0dip"
+                    android:text="@string/sigle_new"
+                    android:textSize="28sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:id="@+id/none2"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:gravity="left"
+                    android:text="@string/none2"
+                    android:textColor="@color/black"
+                    android:textSize="26sp" />
+            </LinearLayout>
+
+            <include layout="@layout/urovo_layout_listline" />
+        </LinearLayout>
+    </ScrollView>
+
+    <Button
+        android:id="@+id/close"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="10dp"
+        android:layout_marginTop="10dp"
+        android:gravity="center"
+        android:text="@string/close_r"
+        android:textSize="34sp" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/version_layout.xml b/app/src/main/res/layout/version_layout.xml
new file mode 100644 (file)
index 0000000..c51457d
--- /dev/null
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="match_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@android:color/white"\r
+    android:orientation="vertical">\r
+\r
+    <ScrollView\r
+        android:id="@+id/scrollView1"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="0dp"\r
+        android:layout_marginBottom="0dp"\r
+        android:layout_weight="1"\r
+        android:background="@drawable/white">\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout10"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:orientation="vertical">\r
+            <!--版本号-->\r
+            <LinearLayout\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+                <TextView\r
+                    android:id="@+id/tvBuildNumber"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/buildNumber"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/tvBuildNumberValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!-- dou mod 20160831 -->\r
+            <!--imei-->\r
+            <LinearLayout\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/imei"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/tv_imei"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!--barcode-->\r
+            <LinearLayout\r
+                android:id="@+id/ll_barcode"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/barcode"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/barcode"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+            <!--校准-->\r
+            <LinearLayout\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:id="@+id/rfParameters"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/rf_parameters"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/rfParametersValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+            <!-- cid号 -->\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout12"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:id="@+id/cidParameters"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="cid"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/cidParametersValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!--SIM卡 ICCID-->\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout11"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:id="@+id/SimIdParameters"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/simid_parameters"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/SimidParametersValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!-- imei2 -->\r
+            <LinearLayout\r
+                android:id="@+id/ll_imei2"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:id="@+id/imeiParameters"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/imei2"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/imeiParametersValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!-- 获取屏幕分辨率 -->\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout14"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:id="@+id/screenResolutionParameters"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/screen_resolution"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/screenResolutionParametersValue"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!--wifi mac地址-->\r
+            <LinearLayout\r
+                android:id="@+id/ll_wifi_mac_address"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/wifi_mac_addaress"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/wifi_mac_address"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+\r
+            <!--蓝牙 mac地址-->\r
+            <LinearLayout\r
+                android:id="@+id/ll_bluethooth_mac_address"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:layout_marginBottom="1.0dip"\r
+                android:background="@drawable/white"\r
+                android:orientation="vertical">\r
+\r
+                <TextView\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/bluethooth_mac_addaress"\r
+                    android:textAppearance="?android:textAppearanceMedium"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/bluethooth_mac_address"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="25sp" />\r
+            </LinearLayout>\r
+\r
+            <View\r
+                android:layout_width="match_parent"\r
+                android:layout_height="1dp"\r
+                android:background="#c0c0c0" />\r
+            <!-- end -->\r
+        </LinearLayout>\r
+    </ScrollView>\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"></mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/wifi_test_layout.xml b/app/src/main/res/layout/wifi_test_layout.xml
new file mode 100644 (file)
index 0000000..cb690c0
--- /dev/null
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+    android:id="@+id/relativeLayout1"\r
+    android:layout_width="fill_parent"\r
+    android:layout_height="fill_parent"\r
+    android:background="@drawable/default_bg"\r
+    android:orientation="vertical" >\r
+\r
+\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout1"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"\r
+        android:gravity="center"\r
+        android:visibility="gone" >\r
+\r
+        <Button\r
+            android:id="@+id/button1"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:onClick="openWifi"\r
+            android:text="@string/wfOpen" />\r
+\r
+        <Button\r
+            android:id="@+id/button2"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:layout_weight="1.0"\r
+            android:onClick="wifiScan"\r
+            android:text="@string/wfScan" />\r
+    </LinearLayout>\r
+\r
+    <LinearLayout\r
+        android:id="@+id/linearLayout2"\r
+        android:layout_width="fill_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_above="@+id/linearLayout1"\r
+        android:layout_alignParentTop="true"\r
+        android:layout_centerHorizontal="true"\r
+        android:gravity="center"\r
+        android:orientation="vertical" >\r
+\r
+        <ImageView\r
+            android:id="@+id/imageView2"\r
+            android:layout_width="wrap_content"\r
+            android:layout_height="wrap_content"\r
+            android:src="@drawable/ic_wifi"\r
+            android:visibility="gone" />\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout3"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:gravity="center" >\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout4"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/textView1"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/wfState"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="22sp" />\r
+\r
+                <TextView\r
+                    android:id="@+id/textView2"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/colon"\r
+                    android:textColor="@drawable/black" />\r
+            </LinearLayout>\r
+\r
+            <LinearLayout\r
+                android:id="@+id/linearLayout5"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="fill_parent"\r
+                android:layout_weight="1.0"\r
+                android:gravity="center" >\r
+\r
+                <TextView\r
+                    android:id="@+id/tvState"\r
+                    android:layout_width="wrap_content"\r
+                    android:layout_height="wrap_content"\r
+                    android:text="@string/empty"\r
+                    android:textColor="@drawable/black"\r
+                    android:textSize="22sp" />\r
+            </LinearLayout>\r
+        </LinearLayout>\r
+\r
+        <LinearLayout\r
+            android:id="@+id/linearLayout6"\r
+            android:layout_width="fill_parent"\r
+            android:layout_height="wrap_content"\r
+            android:background="@drawable/white"\r
+            android:gravity="center"\r
+            android:orientation="vertical" >\r
+\r
+            <Button\r
+                android:id="@+id/button3"\r
+                android:layout_width="wrap_content"\r
+                android:layout_height="wrap_content"\r
+                android:onClick="wifiScan"\r
+                android:text="@string/reScan" />\r
+\r
+            <ListView\r
+                android:id="@+id/lvDevice"\r
+                android:layout_width="fill_parent"\r
+                android:layout_height="wrap_content"\r
+                android:background="@drawable/grey"\r
+                android:cacheColorHint="#00000000" />\r
+        </LinearLayout>\r
+    </LinearLayout>\r
+\r
+    <!--\r
+         <include\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true"\r
+        layout="@layout/success_fail" />\r
+\r
+    -->\r
+\r
+    <mobile.miki.mainui.ButtonViewTwo\r
+        android:id="@+id/btn_set"\r
+        android:layout_width="match_parent"\r
+        android:layout_height="wrap_content"\r
+        android:layout_alignParentBottom="true"\r
+        android:layout_centerHorizontal="true" >\r
+    </mobile.miki.mainui.ButtonViewTwo>\r
+\r
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/raw/chongerfei.mp3 b/app/src/main/res/raw/chongerfei.mp3
new file mode 100644 (file)
index 0000000..7d96887
Binary files /dev/null and b/app/src/main/res/raw/chongerfei.mp3 differ
diff --git a/app/src/main/res/raw/liebao.mp3 b/app/src/main/res/raw/liebao.mp3
new file mode 100644 (file)
index 0000000..338d40c
Binary files /dev/null and b/app/src/main/res/raw/liebao.mp3 differ
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
new file mode 100644 (file)
index 0000000..48d39e2
--- /dev/null
@@ -0,0 +1,884 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+    <string name="app_name">FactoryMode</string>\r
+    <string name="otaupdate">OTA Update</string>\r
+    <string name="light">Light_induction</string>\r
+    <string name="noLight">Could not get brightness value</string>\r
+    <string name="defaultlightness">Getting_brightness</string>\r
+    <string name="lightness">brightness</string>\r
+    <string name="lightTip">Tip: the phone is positive toward the light source is conducive to faster access to brightness</string>\r
+    <string name="magnetic">Magnetic_induction</string>\r
+    <string name="magneticX">Magnetic field x</string>\r
+    <string name="magneticY">Magnetic field Y</string>\r
+    <string name="magneticZ">Magnetic field Z</string>\r
+    <string name="gravity">Gravity induction</string>\r
+    <string name="gravityX">Gravity x</string>\r
+    <string name="gravityY">Gravity Y</string>\r
+    <string name="gravityZ">Gravity Z</string>\r
+    <string name="shakeTest">Vibration_test</string>\r
+    <string name="shakeClick">Click_shock</string>\r
+    <string name="noShake">Does not support the mobile phone vibration</string>\r
+    <string name="keysTest">Key test</string>\r
+    <string name="keyPower">Power</string>\r
+    <string name="keyVLDown">VLUp</string>\r
+    <string name="keyVLUP">VLDown</string>\r
+    <string name="keySearch">Search</string>\r
+    <string name="keyHome">Home</string>\r
+    <string name="keyMenu">Menu</string>\r
+    <string name="keyBack">Back</string>\r
+    <string name="keyCamera">Camera</string>\r
+    <string name="keyCall">Call</string>\r
+    <string name="keyEndCall">EndCall</string>\r
+    <string name="empty">--</string>\r
+    <string name="detectSim">Sim card detection</string>\r
+    <string name="detectSim1">Detection Sim1</string>\r
+    <string name="detectSim2">Detection Sim2</string>\r
+    <string name="sim1">Sim1</string>\r
+    <string name="sim2">Sim2</string>\r
+    <string name="cardTest">SDcardtest</string>\r
+    <string name="cardAvail">Insert SD card</string>\r
+    <string name="cardFreeSize">Available space</string>\r
+    <string name="cardUsedSize">used space</string>\r
+    <string name="cardTotalSize">SD card capacity</string>\r
+    <string name="card2TotalSize">SD2 card capacity</string>\r
+    <string name="checkSum">Checksum</string>\r
+    <string name="nandFlash">Cell phone memory</string>\r
+    <string name="manufacturerID">Manufacturer ID</string>\r
+    <string name="deviceID">device ID</string>\r
+    <string name="rwTestResult">Read and write test results</string>\r
+    <string name="signalTest">Signal test</string>\r
+    <string name="signalRsult">Signal test results</string>\r
+    <string name="signalTestError">Signal test failure</string>\r
+    <string name="emergencyCall">Call 112</string>\r
+    <string name="chinaMoveCall">Call 10086</string>\r
+    <string name="emergencyCallSuccess">Call an emergency call success</string>\r
+    <string name="emergencyCallFail">Call emergency failure</string>\r
+    <string name="headsetTest">Headset test</string>\r
+    <string name="headsetAvail">There is no headset</string>\r
+    <string name="startMusic">play</string>\r
+    <string name="headsetButton">According to the remote control button</string>\r
+    <string name="gpsTest">GPS location</string>\r
+    <string name="gpsLongitude">longitude</string>\r
+    <string name="gpsDimensions">latitude</string>\r
+    <string name="coldRestart">cold boot</string>\r
+    <string name="hotRestart">Hot start</string>\r
+    <string name="noPosition">No geographic information</string>\r
+    <string name="gpsTTFF">GPS TTFF</string>\r
+    <string name="gpslocation">Getting GPS location information...</string>\r
+    <string name="sec">sec</string>\r
+    <string name="fmTest">Screen brightness</string>\r
+    <string name="fmSetFreq">channel</string>\r
+    <string name="rssi">RSSI</string>\r
+    <string name="mhz">MHZ</string>\r
+    <string name="dbm">(dBm)</string>\r
+    <string name="testFreq0">Test Freq 0</string>\r
+    <string name="testFreq1">Test Freq 1</string>\r
+    <string name="testFreq2">Test Freq 2</string>\r
+    <string name="testFreq3">Test Freq 3</string>\r
+    <string name="bluetooth">Bluetooth test</string>\r
+    <string name="blState">Bluetooth status</string>\r
+    <string name="blOpen">Turn on Bluetooth</string>\r
+    <string name="blOpened">Bluetooth is turned on</string>\r
+    <string name="blNoSerport">The current phone does not support Bluetooth</string>\r
+    <string name="bldenied">Bluetooth has been banned</string>\r
+    <string name="blScan">Bluetooth scan</string>\r
+    <string name="blScaning">Scanning Bluetooth device</string>\r
+    <string name="wifitest">WIFI test</string>\r
+    <string name="wfState">WIFI state</string>\r
+    <string name="wfOpen">Start WIFI</string>\r
+    <string name="wfScan">WIFI scan</string>\r
+    <string name="wfScaning">Is sweeping the hot spots</string>\r
+    <string name="cameraTest">Camera test</string>\r
+    <string name="mainCamera">Main camera</string>\r
+    <string name="subCamera">Vice camera</string>\r
+    <string name="ringtone">Bell test</string>\r
+    <string name="ringStart">Click play</string>\r
+    <string name="receiverTest">Receiver test</string>\r
+    <string name="loopback">Microphone test</string>\r
+    <string name="mic1">Mobile phone microphone test</string>\r
+    <string name="mic2">Headphone microphone test</string>\r
+    <string name="receiverStart">Click play</string>\r
+    <string name="colon">:</string>\r
+    <string name="nothing">nothing</string>\r
+    <string name="ok">correct</string>\r
+    <string name="found">find</string>\r
+    <string name="tsb">Taiwan equipment</string>\r
+    <string name="returnBack">return</string>\r
+    <string name="getInfo">Getting information...</string>\r
+    <string name="noFoundDev">No devices found</string>\r
+    <string name="noMainC">Rear facing camera is not supported</string>\r
+    <string name="noSubC">Rear facing camera is not supported</string>\r
+    <string name="gpsOk">GPS module normal</string>\r
+    <string name="pleaseOpGps">Please open the GPS first!</string>\r
+    <string name="waitForpo">Wait for location information</string>\r
+    <string name="state">state</string>\r
+    <string name="have">yes</string>\r
+    <string name="yes">yes</string>\r
+    <string name="no">no</string>\r
+    <string name="_fail">Fail</string>\r
+    <string name="checkFail">Failure detection</string>\r
+    <string name="rwCheckSuccess">Reading and writing test success</string>\r
+    <string name="rwCheckFail">Reading and writing test success</string>\r
+    <string name="dailSuccess">Call success</string>\r
+    <string name="dailFail">Call failed</string>\r
+    <string name="grd">A hot spot</string>\r
+    <string name="foundNoHot">Did not search to the hot spots</string>\r
+    <string name="openWififail">WIFI startup failed</string>\r
+    <string name="scanBegin">Start scanning</string>\r
+    <string name="wifiOpening">Starting WIFI...</string>\r
+    <string name="wifiOpen">WIFI has been started</string>\r
+    <string name="noSuportWifi">Does not support WIFI</string>\r
+    <string name="pleaseInsertHS">Please insert the headset</string>\r
+    <string name="pleaseOffHS">Please unplug the headset</string>\r
+    <string name="record">sound recording</string>\r
+    <string name="recordStart">Is recording</string>\r
+    <string name="stop">stop it</string>\r
+    <string name="recordstop">Stop status</string>\r
+    <string name="play">play</string>\r
+    <string name="delete">delete</string>\r
+    <string name="recordFile">Recording file</string>\r
+    <string name="testTouchScreen">touch screen</string>\r
+    <string name="TouchScreen">TouchScreen</string>\r
+    <string name="TouchScreen_HandWriting">TouchScreen_HandWriting</string>\r
+    <string name="TouchScreen_Verification">TouchScreen_Verification</string>\r
+    <string name="TouchScreen_VerificationPoint">TouchScreen_VerificationPoint</string>\r
+    <string name="TouchScreen_VerificationLine">TouchScreen_VerificationLine</string>\r
+    <string name="TouchScreen_VerificationShaking">TouchScreen_VerificationShaking</string>\r
+    <string name="TouchScreen_MultiTouch">TouchScreen_MultiTouch</string>\r
+    <string name="TouchScreen_Settings_TextValue">The value</string>\r
+    <string name="TouchScreen_Settings_TextSpinner">Category</string>\r
+    <string name="TouchScreen_Settings_TextSet">Set</string>\r
+    <string name="TouchScreen_Settings">Settings</string>\r
+    <string name="TouchScreen_Settings_Value">0</string>\r
+    <string name="TouchScreen_Settings_sdcard">OFF</string>\r
+    <string name="TouchScreen_Settings_uart">OFF</string>\r
+    <string name="TouchScreen_Settings_TextUart">Enable Uart Log</string>\r
+    <string name="TouchScreen_Settings_TextSDcard">Enable SD card Log</string>\r
+    <string name="power">Electricity</string>\r
+    <string name="noPower">Unable to obtain power</string>\r
+    <string name="nowState">current state</string>\r
+    <string name="playrecord">Being played</string>\r
+    <string name="recordFirst">No audio file, please record</string>\r
+    <string name="palyfinish">Play end</string>\r
+    <string name="distanceSensor">Distance sensing</string>\r
+    <string name="noDistanceSensor">No distance sensing information</string>\r
+    <string name="inDistance">Object approach</string>\r
+    <string name="outDistance">Object departure</string>\r
+    <string name="distanceTip">Tip: hand block / leave screen at the top of the test</string>\r
+    <string name="largestSound">Max volume play</string>\r
+    <string name="capture">Capture</string>\r
+    <string name="cameraMotor">Camera motor</string>\r
+    <string name="pullFar">Pull to the maximum</string>\r
+    <string name="pullClose">Pull to the minimum</string>\r
+    <string name="pullLoop">Cycle focus</string>\r
+    <string name="pullStopLoop">Stop cycle focus</string>\r
+    <string name="matvTest">TV signal test</string>\r
+    <string name="press">Hold down</string>\r
+    <string name="release">let go</string>\r
+    <string name="lastOne">Last one</string>\r
+    <string name="nextOne">Next one</string>\r
+    <string name="singleTest">single test</string>\r
+    <string name="read_imei">Display IMEI number</string>\r
+    <string name="modify_imei_sim1">Modify SIM1</string>\r
+    <string name="modify_imei_sim2">Modify SIM2</string>\r
+    <string name="input_imei_title">Please enter a new IMEI number</string>\r
+    <string name="autoTest">Automatic testing</string>\r
+    <string name="pcbaTest">PCBA testing</string>\r
+    <string name="sysVersion">edition</string>\r
+    <string name="reStore">Restore factory settings</string>\r
+    <string name="mediaTest">mediaTest</string>\r
+    <string name="readAPN">APN query</string>\r
+    <string name="sim_lock_settings">SIM card lock function setting</string>\r
+    <string name="modify_imei">Modify IMEI number</string>\r
+    <string name="testReport">Test report</string>\r
+    <string name="beginTestGPS">Click start GPS test</string>\r
+    <string name="beginTestTM">Click start FM test</string>\r
+    <string name="beginTestCamera">Click to start the camera test</string>\r
+    <string name="beginTestMtv">Click to start the TV signal test</string>\r
+    <string name="beginTestCmotor">Click to start the camera motor test</string>\r
+    <string name="beginTestScreenTouch">beginTestScreenTouch</string>\r
+    <string name="beginTestMulitScreenTouch">beginTestMulitScreenTouch</string>\r
+    <string name="testSucess">success</string>\r
+    <string name="testFail">fail</string>\r
+    <string name="testReprot">Test report</string>\r
+    <string name="bbChip">BB Chip</string>\r
+    <string name="msBoard">MS Board</string>\r
+    <string name="modemVer">Modem Ver</string>\r
+    <string name="buildTime">Build Time</string>\r
+    <string name="buildNumber">Build Number</string>\r
+    <string name="uBootVer">UBoot Ver</string>\r
+    <string name="kernelVer">Kernel Ver</string>\r
+    <string name="androidVer">Android Ver</string>\r
+    <string name="swVer">SW Ver</string>\r
+    <string name="verno">Custom Build Verno</string>\r
+    <string name="deviceInfoDefault">unKnown</string>\r
+    <string name="isLatestOne">Is the last one</string>\r
+    <string name="isTopOne">Is the last one</string>\r
+    <string name="reScan">Re scan</string>\r
+    <string name="versionTest">Version test</string>\r
+    <string name="flashLightTest">Flash test</string>\r
+    <string name="openLight">open</string>\r
+    <string name="closeLight">close</string>\r
+    <string name="appsPath">Application path</string>\r
+    <string name="defaultPath">mnt/sdcard/apps</string>\r
+    <string name="installPath">Installation location</string>\r
+    <string name="sdCard">SDCard</string>\r
+    <string name="phone">mobile phone</string>\r
+    <string name="startInstall">Start installation</string>\r
+    <string name="selectInsLocation">Please select the installation location</string>\r
+    <string name="noApps">No application can be installed</string>\r
+    <string name="nowInstall">Being installed</string>\r
+    <string name="submit">determine</string>\r
+    <string name="unbound_cancel">cancel</string>\r
+    <string name="installFinish">Installation end</string>\r
+    <string name="installSoft">Installation software</string>\r
+    <string name="cmmbTest">mobile TV</string>\r
+    <string name="bCmmbTest">Click to enter the mobile TV test</string>\r
+    <string name="setMac">Write WIFI/ Bluetooth MAC address</string>\r
+    <string name="phoneDetail">Device Status</string>\r
+    <string name="imei">IMEI</string>\r
+\r
+    <string name="imei_invalid">invalid</string>\r
+    <string name="imei_write_successful">Write IMEI number is successful, please restart the phone into effect!</string>\r
+    <string name="imei_wirte_fail">Write IMEI number failed, please enter the correct IMEI number!</string>\r
+    <string name="storage">storage</string>\r
+    <string name="sdcard_storage">SD card storage available / total</string>\r
+    <string name="phone_storage">Internal storage available / total</string>\r
+    <string name="mac">MAC</string>\r
+    <string name="bt">Bluetooth</string>\r
+    <string name="wifi">WIFI</string>\r
+    <string name="checkDir">SD card structure</string>\r
+    <string name="installedSoft">Installed applications</string>\r
+    <string name="cpsdcard2">Copy_sdcard2</string>\r
+    <string name="cpsdcard2Hint">Click OK to copy all the files on the SDCard2 to SDCard, the same name of the file will be covered, to confirm the copy?</string>\r
+    <string name="cpsdcard2ing">Being copied...</string>\r
+    <string name="cpsdcard2finish">copy complete</string>\r
+    <string name="agree">confirm</string>\r
+    <string name="cancel">close</string>\r
+    <string name="srcDir">Source directory</string>\r
+    <string name="tarDir">Target directory</string>\r
+    <string name="srcPath">/mnt/sdcard2</string>\r
+    <string name="tarPath">/mnt/sdcard/miki</string>\r
+    <string name="version_label">Version</string>\r
+    <string name="sw_label">[SW VERSION]</string>\r
+    <string name="hw_label">[HW VERSION]</string>\r
+    <string name="btn_close">Close</string>\r
+    <string name="sw_and_hw">Version</string>\r
+    <string name="sn">SN</string>\r
+    <string name="sn_invalid">Invalid</string>\r
+    <string name="hw">Cosmote-ver1</string>\r
+    <string name="sw">Cosmote_</string>\r
+    <string name="vk_hw">Cosmote-ver1</string>\r
+    <string name="vk_sw">Cosmote_</string>\r
+    <string name="no_ota_file">Nu a fost găsită nicio versiune software.Vă rugăm să copiaţi versiunea software in rădăcina SDcard-ului sau memoria internă.</string>\r
+    <string name="update_from_sd">upgrade</string>\r
+    <string name="update_make_sure_to_continue">This operation is not restored, are you sure?</string>\r
+    <string name="update_confirm">Da</string>\r
+\r
+    <string name="update_make_sure_and_select_file">This operation is not restored, such as determining if you click on the button to select the upgrade file.</string>\r
+    <string name="update_select_file">Select file</string>\r
+    <string name="update_write_file_faild">fail to write to file</string>\r
+    <string name="update_file_wrong">File type error, or can not find the upgrade file</string>\r
+    <string name="update_make_sure_to_update">Doriţi să actualizaţi versiunea software?(Vă rugăm să copiaţi versiunea software in rădăcina SDcard-ului sau memoria internă)</string>\r
+    <string name="TestMedia">TestMedia</string>\r
+    <string name="sdcardfile">SDcard</string>\r
+    <string name="buildIn">buildIn</string>\r
+    <string name="no_compass">No magnetic sensor found</string>\r
+    <string name="test_tv_SMT">SMT test</string>\r
+    <string name="test_tv_ZZ">Assembly test</string>\r
+    <string name="test_tv_Retain">Comprehensive test</string>\r
+    <string name="apn_mcc">MCC:</string>\r
+    <string name="apn_mnc">MNC:</string>\r
+    <string name="imei1">IMEI1</string>\r
+    <string name="apn_search">Search</string>\r
+    <string name="lcdTest">LCD</string>\r
+    <string name="lcdTest_lsn">LCD</string>\r
+    <string name="phoneTest">Telephone</string>\r
+    <string name="bgLightTest">Background light test</string>\r
+    <string name="bgLightStrong">Strong backlight</string>\r
+    <string name="bgLightWeak">Weak backlight</string>\r
+    <string name="imei_ok">determine</string>\r
+    <string name="imei2">imei2</string>\r
+    <string name="sorry_again">Sorry, your input is not correct. Please try again!</string>\r
+    <string name="ramTest">Ram</string>\r
+    <string name="romTest">Rom</string>\r
+    <string name="ramromTest">Memory!</string>\r
+    <string name="otgTest">OTG test</string>\r
+    <string name="otg_disconnect">No OTG device connection</string>\r
+    <string name="otg_connect">Detecting device</string>\r
+    <string name="powerBatteryTest">Power charge test</string>\r
+    <string name="power_charge_battery_state">Charging status</string>\r
+    <string name="power_current_battery">Current power</string>\r
+    <string name="power_battery">battery level</string>\r
+    <string name="power_state">Power state</string>\r
+    <string name="power_current_voltage">Current voltage</string>\r
+    <string name="power_temperature">Power supply temperature</string>\r
+    <string name="power_skill">Power technology</string>\r
+    <string name="power_electric">Battery terminal current</string>\r
+    <string name="power_time">Self starting time</string>\r
+    <string name="battery_info_power_unplugged">Not plugged in</string>\r
+    <string name="battery_info_power_ac">alternating current</string>\r
+    <string name="battery_info_power_usb">USB</string>\r
+    <string name="battery_info_power_wireless">wireless</string>\r
+    <string name="battery_info_power_ac_usb">alternating current + USB</string>\r
+    <string name="battery_info_power_unknown">未知</string>\r
+    <string name="battery_info_health_unknown">unknown</string>\r
+    <string name="battery_info_health_good">Good</string>\r
+    <string name="battery_info_health_overheat">overheated</string>\r
+    <string name="battery_info_health_dead">No electricity</string>\r
+    <string name="battery_info_health_over_voltage">Over voltage</string>\r
+    <string name="battery_info_health_unspecified_failure">unknown error</string>\r
+    <string name="battery_info_health_cold">Low power</string>\r
+    <string name="battery_info_temperature_units">° C</string>\r
+    <string name="beginPhoneTest">Click to start the phone test</string>\r
+    <string name="imeisnTest">IMEI/SN</string>\r
+    <string name="key_ear">Earphone button</string>\r
+    <string name="kernel_specified">**********</string>\r
+    <string name="kernelVer1">Kernel Ver1</string>\r
+    <string name="sim_lock">SIM card lock function</string>\r
+    <string name="call_fun">Call test</string>\r
+    <string name="begincall">Click Start test call</string>\r
+\r
+    <string name="battery_status">Battery status : </string>\r
+    <string name="battery_info_status_charging">Charging</string>\r
+    <string name="battery_v">Battery voltage : </string>\r
+    <string name="battery_temp">Battery temperature : </string>\r
+    <string name="battery_info_status_charging_ac">(AC)</string>\r
+    <string name="battery_info_status_charging_usb">(USB)</string>\r
+    <string name="battery_info_status_discharging">Not charging</string>\r
+    <string name="battery_info_status_not_charging">Not charging</string>\r
+    <string name="battery_info_status_full">Full</string>\r
+    <string name="battery_info_status_unknown">Unknown</string>\r
+    <string name="battery_info_voltage_units">mV</string>\r
+    <string name="battery_level">Battery level : </string>\r
+    <string name="battery_health">Battery health : </string>\r
+\r
+\r
+    <string name="battery_charging">Battery Charging Test</string>\r
+    <string name="ins_gsensor">Please turn over the phone to complete the test!</string>\r
+    <string name="ins_gsensor_toast">Pass!</string>\r
+\r
+\r
+    <string name="isZoom_y">PASS!</string>\r
+\r
+    <string name="isZoom_n">FAIL!</string>\r
+    <string name="rf_parameters">rf</string>\r
+    <string name="simid_parameters">SimSerialNumber</string>\r
+    <string name="vl_up">VLUp</string>\r
+    <string name="vl_down">VLDown</string>\r
+    <string name="sos">miaoSoS</string>\r
+    <string name="ageing_mode">Ageing mode</string>\r
+    <string name="ageing_speaker_test">Speaker test</string>\r
+    <string name="ageing_lcd_test">LCD test</string>\r
+    <string name="ageing_camera_test">Camera test</string>\r
+    <string name="show_volum">To adjust the volume, please click here</string>\r
+    <string name="brightness_setting">Dimming</string>\r
+\r
+    <string name="start_test_new">Start Testing</string>\r
+    <string name="benji">Factory test</string>\r
+    <string name="resunme">Reset</string>\r
+    <string name="tip2">Logo: pass (green), not pass (red), not measured (white)</string>\r
+    <string name="clear_new">Clear the test data</string>\r
+    <string name="version_new">Version and calibration</string>\r
+    <string name="touch">Touch screen</string>\r
+    <string name="light_new">Display screen</string>\r
+    <string name="test_camera">Camera</string>\r
+    <string name="camera">Camera</string>\r
+    <string name="speak">Speaker</string>\r
+    <string name="mic_title">Microphone</string>\r
+    <string name="sim_title">SIM card</string>\r
+    <string name="dual_new">Phone</string>\r
+    <string name="beiguang_new">Backlight</string>\r
+    <string name="test_sensor">Gravity sensor</string>\r
+    <string name="test_battery">Battery</string>\r
+    <string name="gps">GPS</string>\r
+    <string name="startRecord">Start recording</string>\r
+    <string name="stopRecord">Stop recording</string>\r
+    <string name="startPlay">Start playing</string>\r
+    <string name="stopPlay">Stop play</string>\r
+    <string name="engineerMode">Engineering model</string>\r
+    <string name="more">More settings</string>\r
+    <string name="unbound">Unbound</string>\r
+    <string name="touchtest_toast">Please touch screen test</string>\r
+    <string name="testing_lcd">Testing LCD</string>\r
+    <string name="fail">FAIL</string>\r
+    <string name="success">SUCCESS</string>\r
+    <string name="network">network</string>\r
+    <string name="location_sucess">Location success </string>\r
+    <string name="location_fail">Location fail</string>\r
+    <string name="gps_searching">Getting Gps information...</string>\r
+    <string name="total_memory">Total memory: </string>\r
+    <string name="avail_memory">Avail memory: </string>\r
+    <string name="testing_backlight">Testing backlight</string>\r
+    <string name="lcd_result">LCD Test Results</string>\r
+    <string name="lcd_result_tip">Please determine whether the screen display is normal</string>\r
+    <string name="ring_test">Playing music, please listen...</string>\r
+    <string name="lcdtest_toast">Click to display the brightness progress bar, double-click to exit</string>\r
+    <string name="speak_toast">please speak</string>\r
+    <string name="stop_record_toast">Stop recording</string>\r
+    <string name="playing_toast">Start playing</string>\r
+    <string name="stop_playing_toast">Stop play</string>\r
+    <string name="clear_new_wanr">Are you sure to clear the test data </string>\r
+    <string name="clear_new_yes">confirm </string>\r
+    <string name="clear_new_no">return</string>\r
+    <string name="cid">CID</string>\r
+    <string name="sim_hasRead">Identified</string>\r
+    <string name="screen_resolution">screenResolution</string>\r
+    <string name="download_mode">download_mode</string>\r
+\r
+    <string name="beginLCDTM">点击开始LCD测试</string>\r
+\r
+    <string name="beginBackCameraTestCmotor">查看后拉摄像头</string>\r
+    <string name="rf_yes">是</string>\r
+    <string name="rf_no">否</string>\r
+    <string name="screen_bright">背光</string>\r
+    <string name="screen_bright_test">点击开始背光测试</string>\r
+    <string name="voice_phone_test">点击进入网络电话测试</string>\r
+    <string name="bluetootheTest">点击进入蓝牙测试</string>\r
+    <string name="radarTest">点击进入雷达测试</string>\r
+    <string name="radar">雷达测试</string>\r
+    <string name="open_radar">打开雷达</string>\r
+    <string name="close_radar">关闭雷达</string>\r
+    <!-- <string name="fm_test">FM测试</string> -->\r
+    <string name="open_fm">打开FM</string>\r
+    <string name="close_fm">关闭FM</string>\r
+    <string name="longitude">经度:</string>\r
+    <string name="latitude">纬度: </string>\r
+    <string name="brightness_test">屏幕亮度(请拖动滚动条):</string>\r
+    <string name="acc_test">acc点火测试</string>\r
+    <string name="brightLight">按键灯测试</string>\r
+    <string name="fm_isRing">提示:将收音机的频率调至101.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。</string>\r
+    <string name="open_buttonLight">点击打开按键灯</string>\r
+\r
+    <string name="result">测试结果</string>\r
+    <!-- <string name="app_name">"测试程序"</string> -->\r
+    <string name="action_settings">设置</string>\r
+    <string name="urovo_test">"Testing tools"</string>\r
+    <string name="model_number">设备型号:</string>\r
+    <string name="manufacturer">制造商:</string>\r
+    <string name="release_number">Android版本:</string>\r
+    <string name="display_number">版本号:</string>\r
+    <string name="test_category_title">测试选项</string>\r
+    <string name="device_model_unknown">设备型号未知</string>\r
+    <string name="device_info_default">未知</string>\r
+    <string name="refresh_complete">刷新完成</string>\r
+    <string name="test_next">下一个</string>\r
+    <string name="test_last">上一个</string>\r
+    <string name="yes1">Yes</string>\r
+    <string name="no1">No</string>\r
+    <string name="ok1">Ok</string>\r
+    <string name="cancel1">Cancel</string>\r
+    <string name="openall_title">全部功能模块</string>\r
+    <string name="openall_summary">打开或关闭全部功能模块</string>\r
+    <string name="show_alltest_title">显示所有测试选项</string>\r
+    <string name="show_alltest_summary">主界面显示所有测试选项</string>\r
+    <string name="setting_title">设置</string>\r
+    <string name="moblie_test_title">整机测试</string>\r
+    <string name="Engineer_mode_title">工程模式</string>\r
+    <string name="map_copy_tools_title">地图拷贝工具</string>\r
+    <!-- device info -->\r
+    <string name="deviceinfo_title">设备信息</string>\r
+    <!-- audio -->\r
+    <string name="audio_default_music">播放默认音频文件</string>\r
+    <string name="audio_sdcard_music">扬声器(喇叭)测试</string>\r
+    <string name="audio_none_music">未找到音频文件</string>\r
+    <string name="audio_palying_tital">正在播放</string>\r
+    <string name="unknown_arter">未知</string>\r
+    <!-- flashlight -->\r
+    <string name="flashlight_title">闪光灯</string>\r
+    <string name="flashlight_none">设备无闪光灯</string>\r
+    <string name="flashlight_on">打开</string>\r
+    <string name="flashlight_off">关闭</string>\r
+    <!-- LED -->\r
+    <string name="led_tite">LED灯测试</string>\r
+    <string name="led_red_on">红色(ON)</string>\r
+    <string name="led_red_off">红色(OFF)</string>\r
+    <string name="led_red">红色</string>\r
+    <string name="led_blue">蓝色</string>\r
+    <string name="led_blue_on">蓝色(ON)</string>\r
+    <string name="led_blue_off">蓝色(OFF)</string>\r
+    <!-- tests -->\r
+    <string name="app_name_android">androidtest</string>\r
+    <string name="test_decive_info">设备</string>\r
+    <string name="test_lcd">LCD</string>\r
+    <string name="test_keypad">按键</string>\r
+    <string name="test_led">LED</string>\r
+    <string name="test_scanner">扫描头</string>\r
+    <string name="test_motor">马达</string>\r
+    <string name="test_audio">音频</string>\r
+    <string name="test_card">磁条卡</string>\r
+    <string name="test_wifi">WiFi</string>\r
+    <string name="test_bluetooth">蓝牙</string>\r
+    <string name="test_flashlight">闪光灯</string>\r
+    <string name="test_printer">打印</string>\r
+    <string name="test_gps">GPS</string>\r
+    <string name="test_record">麦克风</string>\r
+    <string name="test_3g">GSM</string>\r
+    <string name="test_rfid">非接卡</string>\r
+    <string name="test_icc">IC卡</string>\r
+    <string name="test_jj">高频</string>\r
+    <string name="test_cleanall">清除</string>\r
+    <string name="test_openall">打开全部模块</string>\r
+    <string name="test_closeall">关闭全部模块</string>\r
+    <string name="test_specifytest">选择测试</string>\r
+    <string name="test_alltest">全功能测试</string>\r
+    <string name="test_agedtest">老化测试</string>\r
+    <string name="test_noticelabel">请观察PCBA绿灯蓝灯</string>\r
+\r
+    <!-- PICC -->\r
+    <string name="picc_title">PICC测试</string>\r
+    <string name="picc_hint">请将卡放置在识别区</string>\r
+    <string name="picc_none">设备不支持FRID刷卡</string>\r
+\r
+    <!-- NFC -->\r
+    <string name="nfc_hint">请将卡放置在识别区</string>\r
+    <string name="nfc_start">Start</string>\r
+    <string name="nfc_stop">Stop</string>\r
+    <string name="nfc_context_title">NFC Test </string>\r
+    <string name="nfc_title">Test Control</string>\r
+    <string name="nfctest_info">Please place the NFC test card on the top of the NFC detective area of the device,\r
+        then press the start button to start testing, the device will output the warning tone after detected the\r
+        NFC test card. Finally, Press the stop button will stop the test.</string>\r
+    <string name="nfc_frequency">test gap time(ms):</string>\r
+    <!-- motortest -->\r
+    <string name="vibrator_title">震动</string>\r
+    <string name="app_name_driver">drivertest</string>\r
+    <string name="start">震动</string>\r
+    <string name="loginstr">开</string>\r
+    <string name="logoutstr">关</string>\r
+    <string name="wifi1">WIFI</string>\r
+    <string name="wcdma">3G</string>\r
+    <string name="bluetoothcn">蓝牙</string>\r
+    <string name="smt">扫描头</string>\r
+    <string name="motor">马达(MS)</string>\r
+    <!-- camera -->\r
+    <string name="record_start">开始录制</string>\r
+    <string name="record_complete">"录制成功,已保存"</string>\r
+    <string name="takepic_complete">拍照成功</string>\r
+    <string name="no_sdcard">未找到sd卡</string>\r
+    <!-- keypad -->\r
+    <string name="keypad_title">按键测试</string>\r
+    <string name="keypad_s1">S1</string>\r
+    <string name="keypad_s2">S2</string>\r
+    <string name="keypad_scan">Scan</string>\r
+    <string name="keypad_dpad_up">Up</string>\r
+    <string name="keypad_dpad_down">Down</string>\r
+    <string name="keypad_dpad_left">Left</string>\r
+    <string name="keypad_dpad_right">Right</string>\r
+    <string name="keypad_menu">Menu</string>\r
+    <string name="keypad_esc">Esc</string>\r
+    <string name="keypad_home">Home</string>\r
+    <string name="key_0">0</string>\r
+    <string name="key_1">1</string>\r
+    <string name="key_2">2</string>\r
+    <string name="key_3">3</string>\r
+    <string name="key_4">4</string>\r
+    <string name="key_5">5</string>\r
+    <string name="key_6">6</string>\r
+    <string name="key_7">7</string>\r
+    <string name="key_8">8</string>\r
+    <string name="key_9">9</string>\r
+    <string name="key_point">.</string>\r
+    <string name="keypad_sft">Sft</string>\r
+    <string name="keypad_alt">Ctrl</string>\r
+    <string name="keypad_aa">Aa</string>\r
+    <string name="keypad_fn">Fn</string>\r
+    <string name="keypad_ent">Ent</string>\r
+    <string name="keypad_del">"Del"</string>\r
+    <string name="keypad_space">"Space"</string>\r
+    <string name="keypad_power">Power</string>\r
+    <string name="keypad_asterisk">*</string>\r
+    <string name="keypad_pound">#</string>\r
+    <string name="keypad_volup">Volume + </string>\r
+    <string name="keypad_voldn">Volume - </string>\r
+    <string name="endaudio">完成</string>\r
+    <string name="quit">退出</string>\r
+    <!-- Bluetooth -->\r
+    <string name="bluetooth_scan">扫描</string>\r
+    <string name="bluetooth_bonded">已配对的设备</string>\r
+    <string name="bltooth_descovering">正在搜索周围可用设备...</string>\r
+    <string name="bluetooth_bonded_none">无已配对设备</string>\r
+    <string name="bluetooth_connectable">周围可用设备</string>\r
+    <string name="bluetooth_connectable_none">未检测到可用设备</string>\r
+    <string name="bluetooth_disable">蓝牙功能未打开</string>\r
+    <string name="bluetooth_title">蓝牙测试</string>\r
+    <string name="bluetooth_scan_for_devices">"扫描查找设备"</string>\r
+    <string name="btscan">手动搜索设备</string>\r
+    <string name="bluetooth_scan_complete">搜索结束</string>\r
+    <string name="bluetooth_notfound">蓝牙不可用</string>\r
+    <!-- Wifi -->\r
+    <string name="wifi_scan_complete">刷新完成</string>\r
+    <string name="wifi_state_title">Wifi测试</string>\r
+    <string name="wifi_state_connected">连接状态</string>\r
+    <string name="wifi_networks">附近网络</string>\r
+    <string name="wifi_connected_title">已连接</string>\r
+    <string name="wifi_unconnected_title">未连接</string>\r
+    <string name="wifi_scan_none">正在扫描周边wifi,请稍候...</string>\r
+    <string name="wifi_refresh">刷新</string>\r
+    <string name="wifi_state_disabling">正在关闭</string>\r
+    <string name="wifi_state_disabled">WIFI功能未打开,正在开启...</string>\r
+    <string name="wifi_state_enabling">正在打开</string>\r
+    <string name="wifi_state_enabled">WIFI功能已打开</string>\r
+    <string name="wifi_state_unknown">未知</string>\r
+    <!-- ICC -->\r
+    <string name="icc_title">IC卡测试</string>\r
+    <string name="icc_hint">请插IC卡</string>\r
+    <string name="icc_read">读卡</string>\r
+    <!-- scanner -->\r
+    <string name="scannertype_title">扫描头类型:</string>\r
+    <string name="scan_set">设置扫描头类型:</string>\r
+    <string name="scan_title">扫描结果</string>\r
+    <string name="scan_result">扫描结果</string>\r
+    <string name="set_scanner_model_complete">设置扫描头类型成功</string>\r
+    <string name="scan_about_msg">This program is the sample application provided\r
+        with project android-serialport-api. The project is free and open\r
+        source.\n\nMore information and bug report\r
+        on:\nhttp://code.google.com/p/android-serialport-api/\n\n- Cédric</string>\r
+    <string name="scan_error_configuration">Please configure your serial port first.</string>\r
+    <string name="scan_error_security">You do not have read/write permission to the serial port.</string>\r
+    <string name="scan_error_unknown">The serial port can not be opened for an unknown reason.</string>\r
+    <string name="scan_setup">setup</string>\r
+    <string name="scan_loopback">loopback</string>\r
+    <string name="scan_about">about</string>\r
+    <string name="scan_quit">quit</string>\r
+    <string name="scan_console">console</string>\r
+    <string name="scan_openscan">打开扫描头</string>\r
+    <string name="scan_closescan">关闭扫描头</string>\r
+    <string name="scan_setscan">设置默认参数</string>\r
+    <!-- 3G -->\r
+    <string name="wcdmafresh">刷新</string>\r
+    <string name="wcdmatext">3G测试</string>\r
+    <string name="options">Advance options</string>\r
+    <string name="options_save">Save</string>\r
+    <string name="options_cancle">Cancel</string>\r
+    <string name="output_dsc">After th barcode</string>\r
+    <string name="checkbox1_str">Output as keyboard</string>\r
+    <string name="checkbox2_str">Vibrate</string>\r
+    <string name="checkbox3_str">Beep</string>\r
+    <string name="checkbox4_str">Append "enter"</string>\r
+    <!-- gps -->\r
+    <string name="title_gps">GPS数据</string>\r
+    <string name="gps_disable">GPS功能尚未打开</string>\r
+    <string name="gps_longitude">经度:</string>\r
+    <string name="gps_latitude">纬度:</string>\r
+    <string name="gps_speed">速度:</string>\r
+    <string name="gps_altitude">海拔:</string>\r
+    <string name="gps_direction">方位:</string>\r
+    <string name="gps_getloc_failed">"获取地理位置信息失败"</string>\r
+    <!-- motor -->\r
+    <string name="motor_vibrator_frequency">震动时间间隔(ms):</string>\r
+    <string name="motor_vibrator_tm">震动持续时间(ms):</string>\r
+    <string name="motor_bgvibrator_start">开始</string>\r
+    <string name="motor_bgvibrator_stop">结束</string>\r
+    <string name="motor_notfound">设备不支持震动</string>\r
+    <!-- sensor -->\r
+    <string name="sensor_options">设备支持感应器</string>\r
+    <string name="sensor_gravity">重力感应器</string>\r
+    <string name="sensor_accelerometer">加速度感应器</string>\r
+    <string name="sensor_light">光线感应器</string>\r
+    <string name="sensor_data_null">未能获取感应器数据</string>\r
+    <!-- magnetic stripe card -->\r
+    <string name="mag_result_title">刷卡数据统计</string>\r
+    <string name="mag_hint">请刷磁条卡</string>\r
+    <!-- Please brush magnetic stripe card -->\r
+    <string name="count_total_title">刷卡次数:</string>\r
+    <string name="count_track1_title">磁道1成功次数:</string>\r
+    <string name="count_track2_title">磁道2成功次数:</string>\r
+    <string name="count_track3_title">磁道3成功次数:</string>\r
+    <string name="card_data">磁条卡信息</string>\r
+    <string name="card_data_wrong">错误信息</string>\r
+    <!-- print -->\r
+    <string name="print_context">请输入需打印内容</string>\r
+    <string name="printer_context_title">编辑打印内容</string>\r
+    <string name="printer_title">打印</string>\r
+    <string name="printer_temp">"打印机温度: "</string>\r
+    <!-- Printers temperature: -->\r
+    <string name="bt_print_pic">打印图片</string>\r
+    <!-- print Pic -->\r
+    <string name="bt_print_code">打印编码</string>\r
+    <!-- print Code -->\r
+    <string name="bt_print_text">打印文字</string>\r
+    <!-- print Text -->\r
+    <string name="print_hint">请输入打印内容</string>\r
+    <!-- recorder -->\r
+    <string name="none_file">未找到录音文件</string>\r
+    <string name="none_recorded_file">尚未录音</string>\r
+    <string name="recorder_menu_title">录音</string>\r
+    <string name="recorder_files">录音文件</string>\r
+\r
+    <!-- gsm -->\r
+    <string name="gsm_title">GSM信息</string>\r
+    <string name="gsm_refresh">刷新</string>\r
+    <string name="gsm_info_none">未能获取GSM信息</string>\r
+\r
+    <!-- battery -->\r
+    <string name="title_power">电源状态</string>\r
+    <string name="title_battery">电池状态</string>\r
+    <string name="battery_info_status_label" msgid="8109155295509700309">"电池状态:"</string>\r
+    <string name="battery_info_power_label" msgid="7465140230991349382">"是否已插电:"</string>\r
+    <string name="battery_info_scale_label" msgid="3649763192389778437">"当前电池电量:"</string>\r
+    <string name="battery_info_level_label" msgid="8706526709307788737">"上限电池电量:"</string>\r
+    <string name="battery_info_health_label" msgid="6416051542741886958">"电池运行状况:"</string>\r
+    <string name="battery_info_technology_label" msgid="788304533220748681">"电池技术:"</string>\r
+    <string name="battery_info_voltage_label" msgid="8971764146757637863">"电池电压:"</string>\r
+    <!-- <string name="battery_info_voltage_units" msgid="8658490792208288107">"mV"</string> -->\r
+    <string name="battery_info_temperature_label" msgid="1968383098818648037">"电池温度:"</string>\r
+    <!-- <string name="battery_info_temperature_units" msgid="9098950587249987550">"° C"</string> -->\r
+    <string name="battery_info_uptime" msgid="5548545143573527992">"启动后的时间:"</string>\r
+    <string name="battery_info_awake_battery" msgid="2557725975486185849">"使用电池电量的未休眠时间:"</string>\r
+    <string name="battery_info_awake_plugged" msgid="176716874713478188">"充电时的唤醒时间:"</string>\r
+    <string name="battery_info_screen_on" msgid="376277447175613889">"屏幕开启时间:"</string>\r
+    <!--\r
+    <string name="battery_info_status_unknown" msgid="196130600938058547">"未知"</string>\r
+    <string name="battery_info_status_charging" msgid="1705179948350365604">"正在充电"</string>\r
+    <string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(交流电)"</string>\r
+    <string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>\r
+    <string name="battery_info_status_discharging" msgid="6222697503392774475">"正在耗电"</string>\r
+    <string name="battery_info_status_not_charging" msgid="2820070506621483576">"未在充电"</string>\r
+    <string name="battery_info_status_full" msgid="2824614753861462808">"电量充足"</string>\r
+    <string name="battery_info_power_unplugged" msgid="5987246575519551081">"未插电"</string>\r
+    <string name="battery_info_power_ac" msgid="6808516193001604634">"交流电"</string>\r
+    <string name="battery_info_power_usb" msgid="8012931702516331797">"USB"</string>\r
+    <string name="battery_info_power_ac_usb" msgid="6777734146838328688">"交流电 + USB"</string>\r
+    <string name="battery_info_power_unknown" msgid="7344115502868899881">"未知"</string>\r
+    <string name="battery_info_health_unknown" msgid="5664295556921944255">"未知"</string>\r
+    <string name="battery_info_health_good" msgid="8070356565806711806">"正常"</string>\r
+    <string name="battery_info_health_overheat" msgid="8442959549291368806">"过热"</string>\r
+    <string name="battery_info_health_dead" msgid="1725917445762829059">"没电"</string>\r
+    <string name="battery_info_health_over_voltage" msgid="2420269351664490121">"过电压"</string>\r
+    <string name="battery_info_health_unspecified_failure" msgid="6347021103185471590">"未知错误"</string>\r
+    <string name="battery_info_health_cold" msgid="3835692786176707318">"电量低"</string>\r
+\r
+\r
+\r
+\r
+    -->\r
+    <string name="battery_technology_unknwn">"未知"</string>\r
+    <!-- <string name="light">"亮屏了"</string> -->\r
+    <string name="black">"灭屏了"</string>\r
+    <string name="slide"> "请滑动屏幕测试"</string>\r
+    <string name="music_is_run"> "音乐正在播放"</string>\r
+    <string name="sd_status"> "SD状态:已检测到SD卡"</string>\r
+    <string name="sd_tatal"> "总容量:"</string>\r
+    <string name="sd_left">  "剩余容量:" </string>\r
+    <string name="sd_used">  "已用容量:" </string>\r
+    <string name="sd_fail">  "SD状态:未检测到SD卡!" </string>\r
+    <string name="set_tag">  "测试完成,将写入标志位" </string>\r
+    <string name="sim_status">  "SIM状态:SIM 就绪" </string>\r
+    <string name="sim_fail">  "SIM状态:无SIM或SIM卡损坏" </string>\r
+    <string name="china_yidong"> "中国移动"</string>\r
+    <string name="china_lintong"> "中国联通"</string>\r
+    <string name="china_dianxin">  "中国电信" </string>\r
+    <string name="sim_fail1">  "SIM卡过期" </string>\r
+    <string name="gongcheng">  "工厂测试" </string>\r
+    <string name="moshi">  "工程模式" </string>\r
+    <string name="shintool">  "地图拷贝工具" </string>\r
+    <string name="lanya">  "蓝牙测试" </string>\r
+    <string name="lanya_open">  " 蓝牙设备已开启" </string>\r
+    <string name="car_staut">  " 摄像头\n测试结果" </string>\r
+    <string name="start_test">  "开始测试" </string>\r
+    <string name="fm_test">  "FM发射器测试" </string>\r
+    <string name="fm_status">  " FM状态:" </string>\r
+    <string name="fm_tip">  "      提示:将收音机频率调至108.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。" </string>\r
+    <string name="light_test">  "   灭/亮屏测试" </string>\r
+    <string name="light_tip">  "    提示:请按电源键,测试灭/亮屏和电源键,是否正常" </string>\r
+    <string name="light_status">  " 状态:" </string>\r
+    <string name="sd_test">  "SD卡测试" </string>\r
+    <string name="sim_test">  " SIM卡测试" </string>\r
+    <string name="sim_type">  "网络类型" </string>\r
+    <string name="sim_strenth">  "信号强度:" </string>\r
+    <string name="test1">  "PCBA自动测试" </string>\r
+    <string name="test2">  "整机自动测试" </string>\r
+    <string name="sd_title">"SD卡" </string>\r
+    <string name="fm_title">"FM发射" </string>\r
+    <string name="light_title">"灭/亮屏" </string>\r
+    <string name="bt_r">"蓝牙," </string>\r
+    <string name="touch_r">"触摸屏," </string>\r
+    <string name="sim_r">"sim卡," </string>\r
+    <string name="sd_r">"SD卡," </string>\r
+    <string name="mic_r">"双MIC," </string>\r
+    <string name="speak_r">"扬声器," </string>\r
+    <string name="camera_r">"摄像头," </string>\r
+    <string name="fm_r">"FM发射," </string>\r
+    <string name="light_r">"灭/亮屏," </string>\r
+    <string name="barry_r">"电池," </string>\r
+    <string name="pass_r">"已通过的项目:" </string>\r
+    <string name="fail_r">"未通过的项目:" </string>\r
+    <string name="tag_r">"本机NV标志位(1代表通过,0代表未通过):" </string>\r
+    <string name="diglog_r">"请按下图测试,点击任意处,取消该窗口,开始测试" </string>\r
+    <string name="test_r">"测试报告" </string>\r
+    <string name="close_r">"关闭" </string>\r
+    <string name="none">"没有测试记录,完成一次PCBA测试,添加记录" </string>\r
+    <string name="none1">"没有测试记录,完成一次整机自动测试,添加记录" </string>\r
+    <string name="none2">"没有校准记录" </string>\r
+    <string name="jiaju">"PCBA自动测试报告" </string>\r
+    <string name="auto">"整机自动测试报告" </string>\r
+    <string name="jiaju_time">"最近测试时间:" </string>\r
+    <string name="tags">"标志位(按测试顺序):" </string>\r
+    <string name="test_over">"测试完成,将写入标志位" </string>\r
+    <string name="picturing">"正在拍照" </string>\r
+    <string name="recording">"正在录像,请晃动机器测试" </string>\r
+    <string name="pic_over">"拍照完成" </string>\r
+    <string name="write_tag_over">" 已经写入标志位" </string>\r
+    <string name="record1">"录像" </string>\r
+    <string name="photo">"停止" </string>\r
+    <string name="deviceInfo">"版本信息" </string>\r
+    <string name="gsensor">"Gsensor测试" </string>\r
+    <string name="sensor">请旋转手机或屏幕</string>\r
+    <string name="read_data">读取数据</string>\r
+    <string name="sensor_calibration_do_20">进行校准(误差20%)</string>\r
+    <string name="sensor_calibration_do_40">进行校准(误差40%)</string>\r
+    <string name="sensor_calibration_clear">清除校准数据</string>\r
+    <string name="sensor_calibration_note">"   注意:在校准过程中,设备必须处于水平放置状态。"</string>\r
+    <string name="sensor_calibration_intro">"   操作:点击“水平校准”按钮,系统会自动校准,并判断是否成功。点击“清除校准数据”按钮后,校准数据清零,需重新进行水平校准。"</string>\r
+    <string name="sensor_calibration_current_data_hint">加速度传感器当前数据: </string>\r
+    <string name="sensor_calibration_sensor_data_hint">加速度传感器校准数据: </string>\r
+    <string name="sensor_calibration_gsensor">加速度传感器校准</string>\r
+    <string name="record_agin">重新录音</string>\r
+    <string name="bt_tip">请在附近打开蓝牙,观察是否搜索到该蓝牙</string>\r
+    <string name="rf_result">"RF校准标志位:  "</string>\r
+    <string name="rf_gsensor">Rf,Gsensor校准报告</string>\r
+    <string name="sensor_accelerometer1">Gsensor测试</string>\r
+    <string name="sensor_accelerometer2">"Gsensor,"</string>\r
+    <string name="sensor_tip">"       提示:请将机器屏幕分别朝前后左右4个方向,观察箭头变化,只有4个方向都测试通过,才会显示成功。"</string>\r
+    <string name="north">向北</string>\r
+    <string name="sourth">向南</string>\r
+    <string name="weast">向西</string>\r
+    <string name="east">向东</string>\r
+    <string name="gsensor_data">Gsensor参数:</string>\r
+    <string name="auto_tip">该台机器已经做过整机自动测试</string>\r
+    <string name="user_tip">该台机器已经做过PCBA自动测试</string>\r
+    <string name="mic_tip"> "   提示:请选择测试的Mic,然后对着选择的Mic吹气,右图指针转动则判断成功,否则失败。"</string>\r
+    <string name="version_tip"> "显示版本及测试信息"</string>\r
+    <string name="testresult_tip"> "测试结果:"</string>\r
+    <string name="pass_test"> "通过"</string>\r
+    <string name="fail_test"> "未通过"</string>\r
+    <string name="gps_test"> "GPS测试"</string>\r
+    <string name="gsensor_complete"> "Gensor校准"</string>\r
+    <string name="gsensor_20"> "水平校准"</string>\r
+    <string name="gsensor_zhengji"> "整机自动测试: "</string>\r
+    <string name="gsensor_pcba"> "PCBA自动测试: "</string>\r
+    <string name="lamp"> "三色灯 "</string>\r
+    <string name="lamp_tile"> "三色灯测试 "</string>\r
+    <string name="lamp_tip"> "      请观察指示灯颜色变化,如果看到红绿蓝三种颜色依次变化,则判断成功;反之,只看到一种、两种或灯不亮则失败。 "</string>\r
+    <string name="mianmic"> "主Mic测试 "</string>\r
+    <string name="othermic"> "副Mic测试 "</string>\r
+    <string name="button_new"> "按键"</string>\r
+    <string name="leida_new"> "雷达"</string>\r
+    <string name="sigle_new"> "单项测试报告"</string>\r
+    <string name="rf_new"> "Rf校准:"</string>\r
+    <string name="imei_new"> "IMEI号:"</string>\r
+    <string name="lcd_test_new">  "显示屏测试结果" </string>\r
+    <string name="tf_test_new">  "双TF卡" </string>\r
+    <string name="tf_Detect">  "已检测到" </string>\r
+    <string name="tf_UnDetect">  "未检测到" </string>\r
+    <string name="test_over_new">  "测试结束!" </string>\r
+    <string name="lamp_new">  "按键灯" </string>\r
+    <string name="key_result_tip">*提示:点击按键灯测试,观察电源键灯光是否亮起</string>\r
+    <string name="tip1">提示:该界面可进行单项测试</string>\r
+    <string name="mac_new">MAC地址:</string>\r
+    <string name="bt_tip_new">操作步骤:\n1.准备一台可拨打电话的手机和一台固定电话\n2.使用手机与后视镜蓝牙连接,然后向固话拨打电话,\n3.接通后,两边能正常通话,则通过.</string>\r
+\r
+    <string name="open_dialer">正在打开通话界面,请稍后。。。</string>\r
+\r
+</resources>\r
diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml
new file mode 100644 (file)
index 0000000..44f01db
--- /dev/null
@@ -0,0 +1,8 @@
+<resources>
+
+    <!--
+         Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw600dp devices (e.g. 7" tablets) here.
+    -->
+
+</resources>
diff --git a/app/src/main/res/values-sw720dp-land/dimens.xml b/app/src/main/res/values-sw720dp-land/dimens.xml
new file mode 100644 (file)
index 0000000..8d39fd0
--- /dev/null
@@ -0,0 +1,9 @@
+<resources>
+
+    <!--
+         Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+    -->
+  <dimen name="activity_horizontal_margin">128dp</dimen> 
+
+</resources>
diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml
new file mode 100644 (file)
index 0000000..3c02242
--- /dev/null
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
diff --git a/app/src/main/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml
new file mode 100644 (file)
index 0000000..a91fd03
--- /dev/null
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
diff --git a/app/src/main/res/values-zh-rCN/arrays.xml b/app/src/main/res/values-zh-rCN/arrays.xml
new file mode 100644 (file)
index 0000000..575a827
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+    <string-array name="directionLabels">\r
+        <item>北</item>\r
+        <item>东北</item>\r
+        <item>东</item>\r
+        <item>东南</item>\r
+        <item>西北</item>\r
+        <item>西</item>\r
+        <item>西南</item>\r
+        <item>南</item>\r
+    </string-array>\r
+</resources>\r
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
new file mode 100644 (file)
index 0000000..4d755ef
--- /dev/null
@@ -0,0 +1,895 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+\r
+    <string name="app_name">工厂模式</string>\r
+    <string name="otaupdate">OTA Update</string>\r
+    <string name="light">光线感应</string>\r
+    <string name="noLight">无法获取亮度值</string>\r
+    <string name="defaultlightness">正在获取亮度</string>\r
+    <string name="lightness">亮度</string>\r
+    <string name="lightTip">提示:将手机正面朝向光源有利于更快获取亮度</string>\r
+    <string name="magnetic">磁场感应</string>\r
+    <string name="magneticX">磁场X</string>\r
+    <string name="magneticY">磁场Y</string>\r
+    <string name="magneticZ">磁场Z</string>\r
+    <string name="gravity">重力感应</string>\r
+    <string name="gravityX">重力X</string>\r
+    <string name="gravityY">重力Y</string>\r
+    <string name="gravityZ">重力Z</string>\r
+    <string name="shakeTest">震动测试</string>\r
+    <string name="shakeClick">点击震动</string>\r
+    <string name="noShake">不支持手机震动</string>\r
+    <string name="keysTest">按键测试</string>\r
+    <string name="keyPower">电源键</string>\r
+    <string name="keyVLDown">上调键</string>\r
+    <string name="keyVLUP">下调键</string>\r
+    <string name="keySearch">搜索键</string>\r
+    <string name="keyHome">HOME键</string>\r
+    <string name="keyMenu">屏幕开关键</string>\r
+    <string name="keyBack">回退键</string>\r
+    <string name="keyCamera">照相/摄像键</string>\r
+    <string name="keyCall">接听键</string>\r
+    <string name="keyEndCall">挂断键</string>\r
+    <string name="empty">--</string>\r
+    <string name="detectSim">Sim卡检测</string>\r
+    <string name="detectSim1">检测Sim1</string>\r
+    <string name="detectSim2">检测Sim2</string>\r
+    <string name="sim1">Sim卡</string>\r
+    <string name="sim2">Sim2</string>\r
+    <string name="cardTest">SD卡检测</string>\r
+    <string name="cardAvail">是否插入SD卡</string>\r
+    <string name="cardFreeSize">可用空间</string>\r
+    <string name="cardUsedSize">已用空间</string>\r
+    <string name="cardTotalSize">SD1卡状态</string>\r
+    <string name="card2TotalSize">SD2卡状态</string>\r
+    <string name="checkSum">Checksum</string>\r
+    <string name="nandFlash">手机内存</string>\r
+    <string name="manufacturerID">厂家ID</string>\r
+    <string name="deviceID">设备ID</string>\r
+    <string name="rwTestResult">读写测试结果</string>\r
+    <string name="signalTest">信号测试</string>\r
+    <string name="signalRsult">信号测试结果</string>\r
+    <string name="signalTestError">信号测试失败</string>\r
+    <string name="emergencyCall">拨打112</string>\r
+    <string name="chinaMoveCall">拨打10086</string>\r
+    <string name="emergencyCallSuccess">拨打紧急电话成功</string>\r
+    <string name="emergencyCallFail">拨打紧急失败</string>\r
+    <string name="headsetTest">耳麦测试</string>\r
+    <string name="headsetAvail">有无耳麦</string>\r
+    <string name="startMusic">播放</string>\r
+    <string name="headsetButton">按线控器按钮</string>\r
+    <string name="gpsTest">GPS定位</string>\r
+    <string name="gpsLongitude">经度</string>\r
+    <string name="gpsDimensions">维度</string>\r
+    <string name="coldRestart">冷启动</string>\r
+    <string name="hotRestart">热启动</string>\r
+    <string name="noPosition">暂无地理信息</string>\r
+    <string name="gpsTTFF">GPS TTFF</string>\r
+    <string name="gpslocation">正在获取GPS位置信息...</string>\r
+    <string name="sec">sec</string>\r
+    <string name="fmTest">屏幕亮度</string>\r
+    <string name="fmSetFreq">频道</string>\r
+    <string name="rssi">RSSI</string>\r
+    <string name="mhz">MHZ</string>\r
+    <string name="dbm">(dBm)</string>\r
+    <string name="testFreq0">测试频率 0</string>\r
+    <string name="testFreq1">测试频率 1</string>\r
+    <string name="testFreq2">测试频率 2</string>\r
+    <string name="testFreq3">测试频率 3</string>\r
+    <string name="bluetooth">蓝牙测试</string>\r
+    <string name="blState">蓝牙状态</string>\r
+    <string name="blOpen">打开蓝牙</string>\r
+    <string name="blOpened">蓝牙已打开</string>\r
+    <string name="blNoSerport">当前手机不支持蓝牙</string>\r
+    <string name="bldenied">蓝牙已被禁止</string>\r
+    <string name="blScan">蓝牙扫描</string>\r
+    <string name="blScaning">正在扫描蓝牙设备</string>\r
+    <string name="wifitest">WIFI测试</string>\r
+    <string name="wfState">WIFI状态</string>\r
+    <string name="wfOpen">启动WIFI</string>\r
+    <string name="wfScan">WIFI扫描</string>\r
+    <string name="wfScaning">正在扫热点</string>\r
+    <string name="cameraTest">摄像头测试</string>\r
+    <string name="mainCamera">主摄像头</string>\r
+    <string name="subCamera">副摄像头</string>\r
+    <string name="ringtone">铃声测试</string>\r
+    <string name="ringStart">点击播放铃声</string>\r
+    <string name="receiverTest">听筒测试</string>\r
+    <string name="loopback">话筒测试</string>\r
+    <string name="mic1">手机话筒测试</string>\r
+    <string name="mic2">耳机话筒测试</string>\r
+    <string name="receiverStart">点击播放</string>\r
+    <string name="colon">:</string>\r
+    <string name="nothing">无</string>\r
+    <string name="ok">正确</string>\r
+    <string name="found">找到</string>\r
+    <string name="tsb">台设备</string>\r
+    <string name="returnBack">返回</string>\r
+    <string name="getInfo">正在获取信息...</string>\r
+    <string name="noFoundDev">未找到任何设备</string>\r
+    <string name="noMainC">不支持后置摄像头</string>\r
+    <string name="noSubC">不支持后置摄像头</string>\r
+    <string name="gpsOk">GPS模块正常</string>\r
+    <string name="pleaseOpGps">请先打开GPS!</string>\r
+    <string name="waitForpo">等待获取位置信息</string>\r
+    <string name="state">状态</string>\r
+    <string name="have">有</string>\r
+    <string name="yes">是</string>\r
+    <string name="no">否</string>\r
+    <string name="checkFail">检测失败</string>\r
+    <string name="rwCheckSuccess">读写测试成功</string>\r
+    <string name="rwCheckFail">读写测试失败</string>\r
+    <string name="dailSuccess">拨打成功</string>\r
+    <string name="dailFail">拨打失败</string>\r
+    <string name="grd">个Wifi热点</string>\r
+    <string name="foundNoHot">未搜索到热点</string>\r
+    <string name="openWififail">WIFI启动失败</string>\r
+    <string name="scanBegin">开始扫描</string>\r
+    <string name="wifiOpening">正在启动WIFI...</string>\r
+    <string name="wifiOpen">WIFI已启动</string>\r
+    <string name="noSuportWifi">不支持WIFI</string>\r
+    <string name="pleaseInsertHS">请插入耳机</string>\r
+    <string name="pleaseOffHS">请拔掉耳机</string>\r
+    <string name="record">录音</string>\r
+    <string name="recordStart">正在录音</string>\r
+    <string name="stop">停止</string>\r
+    <string name="recordstop">停止状态</string>\r
+    <string name="play">播放</string>\r
+    <string name="delete">删除</string>\r
+    <string name="recordFile">录音文件</string>\r
+    <string name="testTouchScreen">触摸屏</string>\r
+    <string name="TouchScreen">触摸屏</string>\r
+    <string name="TouchScreen_HandWriting">触摸屏_痕迹</string>\r
+    <string name="TouchScreen_Verification">触摸屏_验证</string>\r
+    <string name="TouchScreen_VerificationPoint">触摸屏_验证点</string>\r
+    <string name="TouchScreen_VerificationLine">触摸屏_验证线</string>\r
+    <string name="TouchScreen_VerificationShaking">触摸屏_验证振动</string>\r
+    <string name="TouchScreen_MultiTouch">触摸屏多点触摸_</string>\r
+    <string name="TouchScreen_Settings_TextValue">价值</string>\r
+    <string name="TouchScreen_Settings_TextSpinner">类别</string>\r
+    <string name="TouchScreen_Settings_TextSet">Set</string>\r
+    <string name="TouchScreen_Settings">设置</string>\r
+    <string name="TouchScreen_Settings_Value">0</string>\r
+    <string name="TouchScreen_Settings_sdcard">关闭</string>\r
+    <string name="TouchScreen_Settings_uart">关闭</string>\r
+    <string name="TouchScreen_Settings_TextUart">使UART的日志</string>\r
+    <string name="TouchScreen_Settings_TextSDcard">启用SD卡日志</string>\r
+    <string name="power">电量</string>\r
+    <string name="noPower">无法获取电源</string>\r
+    <string name="nowState">当前状态</string>\r
+    <string name="playrecord">正在播放</string>\r
+    <string name="recordFirst">无录音文件,请先录音</string>\r
+    <string name="palyfinish">播放结束</string>\r
+    <string name="distanceSensor">距离感应</string>\r
+    <string name="noDistanceSensor">无距离感应信息</string>\r
+    <string name="inDistance">物体靠近</string>\r
+    <string name="outDistance">物体离开</string>\r
+    <string name="distanceTip">提示:手遮挡/离开屏幕顶部进行测试</string>\r
+    <string name="largestSound">最大音量播放</string>\r
+    <string name="capture">采集</string>\r
+    <string name="cameraMotor">摄像头</string>\r
+    <string name="pullFar">拉到最大</string>\r
+    <string name="pullClose">拉到最小</string>\r
+    <string name="pullLoop">循环对焦</string>\r
+    <string name="pullStopLoop">停止循环对焦</string>\r
+    <string name="matvTest">电视信号测试</string>\r
+    <string name="press">按住</string>\r
+    <string name="release">放开</string>\r
+    <string name="lastOne">上一个</string>\r
+    <string name="nextOne">下一个</string>\r
+    <string name="singleTest">单项测试</string>\r
+    <string name="read_imei">显示IMEI号</string>\r
+    <string name="modify_imei_sim1">修改SIM1</string>\r
+    <string name="modify_imei_sim2">修改SIM2</string>\r
+    <string name="input_imei_title">请输入新IMEI号</string>\r
+    <string name="autoTest">自动测试</string>\r
+    <string name="pcbaTest">PCBA测试</string>\r
+    <string name="sysVersion">版本</string>\r
+    <string name="reStore">恢复出厂设置</string>\r
+    <string name="mediaTest">媒体测试</string>\r
+    <string name="readAPN">APN查询</string>\r
+    <string name="sim_lock_settings">SIM卡锁卡功能设置</string>\r
+    <string name="modify_imei">修改IMEI号</string>\r
+    <string name="testReport">测试报告</string>\r
+    <string name="beginTestGPS">点击开始GPS测试</string>\r
+    <string name="beginTestTM">点击开始FM测试</string>\r
+    <string name="beginLCDTM">点击开始LCD测试</string>\r
+    <string name="lcdTest">LCD</string>\r
+    <string name="lcdTest_lsn">LCD</string>\r
+    <string name="beginTestCamera">点击开始摄像头测试</string>\r
+    <string name="beginTestMtv">点击开始电视信号测试</string>\r
+    <string name="beginTestCmotor">查看主摄像头</string>\r
+    <string name="beginTestScreenTouch">点击开始触摸屏测试</string>\r
+    <string name="beginTestMulitScreenTouch">点击开始多点触摸屏测试</string>\r
+    <string name="testSucess">成功</string>\r
+    <string name="testFail">失败</string>\r
+    <string name="testReprot">测试报告</string>\r
+    <string name="bbChip">BB Chip</string>\r
+    <string name="msBoard">MS Board</string>\r
+    <string name="modemVer">现代版</string>\r
+    <string name="buildTime">建造时间</string>\r
+    <string name="buildNumber">版本号</string>\r
+    <string name="uBootVer">uboot版本</string>\r
+    <string name="kernelVer">内核版本</string>\r
+    <string name="androidVer">Android版本</string>\r
+    <string name="swVer">SW 版本</string>\r
+    <string name="verno">自定义生成Verno</string>\r
+    <string name="deviceInfoDefault">未知</string>\r
+    <string name="isLatestOne">已是最后一个</string>\r
+    <string name="isTopOne">已是最前一个</string>\r
+    <string name="reScan">重新扫描</string>\r
+    <string name="versionTest">版本测试</string>\r
+    <string name="flashLightTest">闪光灯测试</string>\r
+    <string name="openLight">打开</string>\r
+    <string name="closeLight">关闭</string>\r
+    <string name="appsPath">应用路径</string>\r
+    <string name="defaultPath">mnt/sdcard/apps</string>\r
+    <string name="installPath">安装位置</string>\r
+    <string name="sdCard">SDCard</string>\r
+    <string name="phone">手机</string>\r
+    <string name="startInstall">开始安装</string>\r
+    <string name="selectInsLocation">请选择安装位置</string>\r
+    <string name="noApps">没有可安装应用</string>\r
+    <string name="nowInstall">正在安装</string>\r
+    <string name="submit">确定</string>\r
+    <string name="unbound_cancel">取消</string>\r
+    <string name="installFinish">安装结束</string>\r
+    <string name="installSoft">安装软件</string>\r
+    <string name="cmmbTest">手机电视</string>\r
+    <string name="bCmmbTest">点击进入手机电视测试</string>\r
+    <string name="setMac">写WIFI/蓝牙MAC地址</string>\r
+    <string name="phoneDetail">手机详情</string>\r
+    <string name="no_ota_file">OTA升级文件不存在,请将OTA升级包放在sdcard或手机存储的根目录</string>\r
+    <string name="imei_wirte_fail">写IMEI号失败,请输入正确IMEI号!</string>\r
+    <string name="storage">存储</string>\r
+    <string name="sdcard_storage">SD卡存储 可用/总量</string>\r
+    <string name="phone_storage">内部存储 可用/总量</string>\r
+    <string name="mac">MAC</string>\r
+    <string name="bt">蓝牙</string>\r
+    <string name="wifi">WIFI</string>\r
+    <string name="checkDir">查看SD卡结构</string>\r
+    <string name="installedSoft">已安装应用</string>\r
+    <string name="cpsdcard2">SDCard2拷贝</string>\r
+    <string name="cpsdcard2Hint">点击确认后将拷贝SDCard2上的所有文件到SDCard上,有相同名称的文件将被覆盖,确认拷贝?</string>\r
+    <string name="cpsdcard2ing">正在拷贝...</string>\r
+    <string name="cpsdcard2finish">拷贝完成</string>\r
+    <string name="agree">确认</string>\r
+    <string name="cancel">关闭</string>\r
+    <string name="srcDir">源目录</string>\r
+    <string name="tarDir">目标目录</string>\r
+    <string name="srcPath">/mnt/sdcard2</string>\r
+    <string name="tarPath">/mnt/sdcard/miki</string>\r
+    <string name="version_label">版本</string>\r
+    <string name="sw_label">[SW 版本]</string>\r
+    <string name="hw_label">[HW 版本]</string>\r
+    <string name="btn_close">关闭</string>\r
+    <string name="sw_and_hw">版本</string>\r
+    <string name="sn">SN</string>\r
+    <string name="sn_invalid">无效</string>\r
+    <string name="hw">Cosmote-ver1</string>\r
+    <string name="sw">Cosmote_</string>\r
+    <string name="vk_hw">Cosmote-ver1</string>\r
+    <string name="vk_sw">Cosmote_</string>\r
+    <string name="update_from_sd">升级</string>\r
+    <string name="update_make_sure_to_continue">此操作不可恢复,您确定吗?</string>\r
+    <string name="update_confirm">确定</string>\r
+    <string name="update_make_sure_and_select_file">此操作不可恢复,如确定请点击按钮选择升级文件</string>\r
+    <string name="update_select_file">选择文件</string>\r
+    <string name="update_write_file_faild">写入文件失败</string>\r
+    <string name="update_file_wrong">文件类型错误,或找不到该升级文件</string>\r
+    <string name="update_make_sure_to_update">确定要升级系统吗?(请将OTA升级包放在sdcard或手机存储的根目录)</string>\r
+    <string name="TestMedia">试验介质</string>\r
+    <string name="sdcardfile">SDka</string>\r
+    <string name="buildIn">建立</string>\r
+    <string name="no_compass">无磁传感器</string>\r
+    <string name="test_tv_SMT">SMT测试</string>\r
+    <string name="test_tv_ZZ">组装测试</string>\r
+    <string name="test_tv_Retain">全面测试</string>\r
+    <string name="apn_mcc">MCC:</string>\r
+    <string name="apn_mnc">MNC:</string>\r
+    <string name="imei1">IMEI1</string>\r
+    <string name="apn_search">搜索</string>\r
+    <string name="phoneTest">电话</string>\r
+    <string name="bgLightTest">背景灯测试</string>\r
+    <string name="bgLightStrong">强背光</string>\r
+    <string name="bgLightWeak">弱背光</string>\r
+    <string name="imei_ok">确定</string>\r
+    <string name="imei2">imei2</string>\r
+    <string name="sorry_again">抱歉,您的输入不正确,请重试!</string>\r
+    <string name="ramTest">Ram</string>\r
+    <string name="romTest">Rom</string>\r
+    <string name="ramromTest">内存</string>\r
+    <string name="otgTest">OTG测试</string>\r
+    <string name="otg_disconnect">无OTG设备连接</string>\r
+    <string name="otg_connect">检测到设备</string>\r
+    <string name="powerBatteryTest">电源充电测试</string>\r
+    <string name="power_charge_battery_state">充电状态</string>\r
+    <string name="power_current_battery">当前电量</string>\r
+    <string name="power_battery">电池电量</string>\r
+    <string name="power_state">电源状态</string>\r
+    <string name="power_current_voltage">当前电压</string>\r
+    <string name="power_temperature">电源温度</string>\r
+    <string name="power_skill">电源技术</string>\r
+    <string name="power_electric">电池端电流</string>\r
+    <string name="power_time">自启动的时间</string>\r
+    <string name="battery_info_power_unplugged">未插电</string>\r
+    <string name="battery_info_power_ac">交流电</string>\r
+    <string name="battery_info_power_usb">USB</string>\r
+    <string name="battery_info_power_wireless">无线</string>\r
+    <string name="battery_info_power_ac_usb">交流电 + USB</string>\r
+    <string name="battery_info_power_unknown">未知</string>\r
+    <string name="battery_info_health_unknown">未知</string>\r
+    <string name="battery_info_health_good">正常</string>\r
+    <string name="battery_info_health_overheat">过热</string>\r
+    <string name="battery_info_health_dead">没电</string>\r
+    <string name="battery_info_health_over_voltage">过电压</string>\r
+    <string name="battery_info_health_unspecified_failure">未知错误</string>\r
+    <string name="battery_info_health_cold">电量低</string>\r
+    <string name="battery_info_temperature_units">° C</string>\r
+    <string name="beginPhoneTest">点击开始电话测试</string>\r
+    <string name="imeisnTest">IMEI/SN</string>\r
+    <string name="key_ear">耳机按键</string>\r
+    <string name="kernel_specified">**********</string>\r
+    <string name="kernelVer1">Kernel Ver1</string>\r
+    <string name="sim_lock">SIM卡锁卡功能</string>\r
+    <string name="imei">IMEI号</string>\r
+    <string name="imei_invalid">无效</string>\r
+    <string name="imei_write_successful">写IMEI号成功,请重启手机生效!</string>\r
+    <string name="call_fun">通话测试</string>\r
+    <string name="begincall">点击开始通话测试</string>\r
+    <string name="battery_status">充电状态 : </string>\r
+    <string name="battery_info_status_charging">正在充电</string>\r
+    <string name="battery_v">电池电压 : </string>\r
+    <string name="battery_temp">电池温度 : </string>\r
+    <string name="battery_info_status_charging_ac">(AC)</string>\r
+    <string name="battery_info_status_charging_usb">(USB)</string>\r
+    <string name="battery_info_status_discharging">未充电</string>\r
+    <string name="battery_info_status_not_charging">未充电</string>\r
+    <string name="battery_info_status_full">电池已满</string>\r
+    <string name="battery_info_status_unknown">状态未知</string>\r
+    <string name="battery_info_voltage_units">mV</string>\r
+    <string name="battery_level">电量 : </string>\r
+    <string name="battery_health">电池状态 : </string>\r
+    <string name="battery_charging">充电测试</string>\r
+    <string name="ins_gsensor">请翻转手机来完成测试!</string>\r
+    <string name="ins_gsensor_toast">通过!</string>\r
+    <string name="isZoom_y">验证OK!</string>\r
+    <string name="isZoom_n">无法检测到马达!</string>\r
+    <!-- dou mod 20160831 -->\r
+    <string name="rf_parameters">校准</string>\r
+    <string name="beginBackCameraTestCmotor">查看后拉摄像头</string>\r
+    <string name="rf_yes">是</string>\r
+    <string name="rf_no">否</string>\r
+    <string name="screen_bright">背光</string>\r
+    <string name="screen_bright_test">点击开始背光测试</string>\r
+    <string name="network">网络</string>\r
+    <string name="voice_phone_test">点击进入网络电话测试</string>\r
+    <string name="bluetootheTest">点击进入蓝牙测试</string>\r
+    <string name="radarTest">点击进入雷达测试</string>\r
+    <string name="radar">雷达测试</string>\r
+    <string name="open_radar">打开雷达</string>\r
+    <string name="close_radar">关闭雷达</string>\r
+    <!-- <string name="fm_test">FM测试</string> -->\r
+    <string name="open_fm">打开FM</string>\r
+    <string name="close_fm">关闭FM</string>\r
+    <string name="longitude">经度:</string>\r
+    <string name="latitude">纬度: </string>\r
+    <string name="location_sucess">定位成功 </string>\r
+    <string name="location_fail">定位失败 </string>\r
+    <string name="brightness_test">屏幕亮度(请拖动滚动条):</string>\r
+    <string name="acc_test">acc点火测试</string>\r
+    <string name="brightLight">按键灯测试</string>\r
+\r
+    <string name="ring_test">正在播放音乐,请注意收听...</string>\r
+    <string name="fm_isRing">提示:将收音机的频率调至101.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。</string>\r
+    <string name="sim_hasRead">已识别</string>\r
+    <string name="open_buttonLight">点击打开按键灯</string>\r
+    <!-- end -->\r
+\r
+\r
+\r
+    <!-- add by tyy 2016.9.2 -->\r
+\r
+    <string name="result">测试结果</string>\r
+    <string name="success">成功</string>\r
+    <string name="fail">失败</string>\r
+    <!-- <string name="app_name">"测试程序"</string> -->\r
+    <string name="action_settings">设置</string>\r
+    <string name="urovo_test">"Testing tools"</string>\r
+    <string name="model_number">设备型号:</string>\r
+    <string name="manufacturer">制造商:</string>\r
+    <string name="release_number">Android版本:</string>\r
+    <string name="display_number">版本号:</string>\r
+    <string name="test_category_title">测试选项</string>\r
+    <string name="device_model_unknown">设备型号未知</string>\r
+    <string name="device_info_default">未知</string>\r
+    <string name="refresh_complete">刷新完成</string>\r
+    <string name="test_next">下一个</string>\r
+    <string name="test_last">上一个</string>\r
+    <string name="yes1">Yes</string>\r
+    <string name="no1">No</string>\r
+    <string name="ok1">Ok</string>\r
+    <string name="cancel1">Cancel</string>\r
+    <string name="openall_title">全部功能模块</string>\r
+    <string name="openall_summary">打开或关闭全部功能模块</string>\r
+    <string name="show_alltest_title">显示所有测试选项</string>\r
+    <string name="show_alltest_summary">主界面显示所有测试选项</string>\r
+    <string name="setting_title">设置</string>\r
+    <string name="moblie_test_title">整机测试</string>\r
+    <string name="Engineer_mode_title">工程模式</string>\r
+    <string name="map_copy_tools_title">地图拷贝工具</string>\r
+    <!-- device info -->\r
+    <string name="deviceinfo_title">设备信息</string>\r
+    <!-- audio -->\r
+    <string name="audio_default_music">播放默认音频文件</string>\r
+    <string name="audio_sdcard_music">扬声器(喇叭)测试</string>\r
+    <string name="audio_none_music">未找到音频文件</string>\r
+    <string name="audio_palying_tital">正在播放</string>\r
+    <string name="unknown_arter">未知</string>\r
+    <!-- flashlight -->\r
+    <string name="flashlight_title">闪光灯</string>\r
+    <string name="flashlight_none">设备无闪光灯</string>\r
+    <string name="flashlight_on">打开</string>\r
+    <string name="flashlight_off">关闭</string>\r
+    <!-- LED -->\r
+    <string name="led_tite">LED灯测试</string>\r
+    <string name="led_red_on">红色(ON)</string>\r
+    <string name="led_red_off">红色(OFF)</string>\r
+    <string name="led_red">红色</string>\r
+    <string name="led_blue">蓝色</string>\r
+    <string name="led_blue_on">蓝色(ON)</string>\r
+    <string name="led_blue_off">蓝色(OFF)</string>\r
+    <!-- tests -->\r
+    <string name="app_name_android">androidtest</string>\r
+    <string name="test_decive_info">设备</string>\r
+    <string name="test_lcd">LCD</string>\r
+    <string name="test_keypad">按键</string>\r
+    <string name="test_led">LED</string>\r
+    <string name="test_scanner">扫描头</string>\r
+    <string name="test_motor">马达</string>\r
+    <string name="test_audio">音频</string>\r
+    <string name="test_card">磁条卡</string>\r
+    <string name="test_sensor">重力感应</string>\r
+    <string name="test_camera">摄像头</string>\r
+    <string name="test_wifi">WiFi</string>\r
+    <string name="test_bluetooth">蓝牙</string>\r
+    <string name="test_battery">电池</string>\r
+    <string name="test_flashlight">闪光灯</string>\r
+    <string name="test_printer">打印</string>\r
+    <string name="test_gps">GPS</string>\r
+    <string name="test_record">麦克风</string>\r
+    <string name="test_3g">GSM</string>\r
+    <string name="test_rfid">非接卡</string>\r
+    <string name="test_icc">IC卡</string>\r
+    <string name="test_jj">高频</string>\r
+    <string name="test_cleanall">清除</string>\r
+    <string name="test_openall">打开全部模块</string>\r
+    <string name="test_closeall">关闭全部模块</string>\r
+    <string name="test_specifytest">选择测试</string>\r
+    <string name="test_alltest">全功能测试</string>\r
+    <string name="test_agedtest">老化测试</string>\r
+    <string name="test_noticelabel">请观察PCBA绿灯蓝灯</string>\r
+\r
+    <!-- PICC -->\r
+    <string name="picc_title">PICC测试</string>\r
+    <string name="picc_hint">请将卡放置在识别区</string>\r
+    <string name="picc_none">设备不支持FRID刷卡</string>\r
+\r
+    <!-- NFC -->\r
+    <string name="nfc_hint">请将卡放置在识别区</string>\r
+    <string name="nfc_start">Start</string>\r
+    <string name="nfc_stop">Stop</string>\r
+    <string name="nfc_context_title">NFC Test </string>\r
+    <string name="nfc_title">Test Control</string>\r
+    <string name="nfctest_info">Please place the NFC test card on the top of the NFC detective area of the device, \r
+        then press the start button to start testing, the device will output the warning tone after detected the \r
+        NFC test card. Finally, Press the stop button will stop the test.</string>\r
+    <string name="nfc_frequency">test gap time(ms):</string>\r
+    <!-- motortest -->\r
+    <string name="vibrator_title">震动</string>\r
+    <string name="app_name_driver">drivertest</string>\r
+    <string name="start">震动</string>\r
+    <string name="loginstr">开</string>\r
+    <string name="logoutstr">关</string>\r
+    <string name="gps">GPS</string>\r
+    <string name="wifi1">WIFI</string>\r
+    <string name="wcdma">3G</string>\r
+    <string name="bluetoothcn">蓝牙</string>\r
+    <string name="smt">扫描头</string>\r
+    <string name="motor">马达(MS)</string>\r
+    <!-- camera -->\r
+    <string name="record_start">开始录制</string>\r
+    <string name="record_complete">"录制成功,已保存"</string>\r
+    <string name="takepic_complete">拍照成功</string>\r
+    <string name="no_sdcard">未找到sd卡</string>\r
+    <!-- keypad -->\r
+    <string name="keypad_title">按键测试</string>\r
+    <string name="keypad_s1">S1</string>\r
+    <string name="keypad_s2">S2</string>\r
+    <string name="keypad_scan">Scan</string>\r
+    <string name="keypad_dpad_up">Up</string>\r
+    <string name="keypad_dpad_down">Down</string>\r
+    <string name="keypad_dpad_left">Left</string>\r
+    <string name="keypad_dpad_right">Right</string>\r
+    <string name="keypad_menu">Menu</string>\r
+    <string name="keypad_esc">Esc</string>\r
+    <string name="keypad_home">Home</string>\r
+    <string name="key_0">0</string>\r
+    <string name="key_1">1</string>\r
+    <string name="key_2">2</string>\r
+    <string name="key_3">3</string>\r
+    <string name="key_4">4</string>\r
+    <string name="key_5">5</string>\r
+    <string name="key_6">6</string>\r
+    <string name="key_7">7</string>\r
+    <string name="key_8">8</string>\r
+    <string name="key_9">9</string>\r
+    <string name="key_point">.</string>\r
+    <string name="keypad_sft">Sft</string>\r
+    <string name="keypad_alt">Ctrl</string>\r
+    <string name="keypad_aa">Aa</string>\r
+    <string name="keypad_fn">Fn</string>\r
+    <string name="keypad_ent">Ent</string>\r
+    <string name="keypad_del">"Del"</string>\r
+    <string name="keypad_space">"Space"</string>\r
+    <string name="keypad_power">Power</string>\r
+    <string name="keypad_asterisk">*</string>\r
+    <string name="keypad_pound">#</string>\r
+    <string name="keypad_volup">Volume + </string>\r
+    <string name="keypad_voldn">Volume - </string>\r
+    <string name="endaudio">完成</string>\r
+    <string name="quit">退出</string>\r
+    <!-- Bluetooth -->\r
+    <string name="bluetooth_scan">扫描</string>\r
+    <string name="bluetooth_bonded">已配对的设备</string>\r
+    <string name="bltooth_descovering">正在搜索周围可用设备...</string>\r
+    <string name="bluetooth_bonded_none">无已配对设备</string>\r
+    <string name="bluetooth_connectable">周围可用设备</string>\r
+    <string name="bluetooth_connectable_none">未检测到可用设备</string>\r
+    <string name="bluetooth_disable">蓝牙功能未打开</string>\r
+    <string name="bluetooth_title">蓝牙测试</string>\r
+    <string name="bluetooth_scan_for_devices">"扫描查找设备"</string>\r
+    <string name="btscan">手动搜索设备</string>\r
+    <string name="bluetooth_scan_complete">搜索结束</string>\r
+    <string name="bluetooth_notfound">蓝牙不可用</string>\r
+    <!-- Wifi -->\r
+    <string name="wifi_scan_complete">刷新完成</string>\r
+    <string name="wifi_state_title">Wifi测试</string>\r
+    <string name="wifi_state_connected">连接状态</string>\r
+    <string name="wifi_networks">附近网络</string>\r
+    <string name="wifi_connected_title">已连接</string>\r
+    <string name="wifi_unconnected_title">未连接</string>\r
+    <string name="wifi_scan_none">正在扫描周边wifi,请稍候...</string>\r
+    <string name="wifi_refresh">刷新</string>\r
+    <string name="wifi_state_disabling">正在关闭</string>\r
+    <string name="wifi_state_disabled">WIFI功能未打开,正在开启...</string>\r
+    <string name="wifi_state_enabling">正在打开</string>\r
+    <string name="wifi_state_enabled">WIFI功能已打开</string>\r
+    <string name="wifi_state_unknown">未知</string>\r
+    <!-- ICC -->\r
+    <string name="icc_title">IC卡测试</string>\r
+    <string name="icc_hint">请插IC卡</string>\r
+    <string name="icc_read">读卡</string>\r
+    <!-- scanner -->\r
+    <string name="scannertype_title">扫描头类型:</string>\r
+    <string name="scan_set">设置扫描头类型:</string>\r
+    <string name="scan_title">扫描结果</string>\r
+    <string name="scan_result">扫描结果</string>\r
+    <string name="set_scanner_model_complete">设置扫描头类型成功</string>\r
+    <string name="scan_about_msg">This program is the sample application provided\r
+        with project android-serialport-api. The project is free and open\r
+        source.\n\nMore information and bug report\r
+        on:\nhttp://code.google.com/p/android-serialport-api/\n\n- Cédric</string>\r
+    <string name="scan_error_configuration">Please configure your serial port first.</string>\r
+    <string name="scan_error_security">You do not have read/write permission to the serial port.</string>\r
+    <string name="scan_error_unknown">The serial port can not be opened for an unknown reason.</string>\r
+    <string name="scan_setup">setup</string>\r
+    <string name="scan_loopback">loopback</string>\r
+    <string name="scan_about">about</string>\r
+    <string name="scan_quit">quit</string>\r
+    <string name="scan_console">console</string>\r
+    <string name="scan_openscan">打开扫描头</string>\r
+    <string name="scan_closescan">关闭扫描头</string>\r
+    <string name="scan_setscan">设置默认参数</string>\r
+    <!-- 3G -->\r
+    <string name="wcdmafresh">刷新</string>\r
+    <string name="wcdmatext">3G测试</string>\r
+    <string name="options">Advance options</string>\r
+    <string name="options_save">Save</string>\r
+    <string name="options_cancle">Cancel</string>\r
+    <string name="output_dsc">After th barcode</string>\r
+    <string name="checkbox1_str">Output as keyboard</string>\r
+    <string name="checkbox2_str">Vibrate</string>\r
+    <string name="checkbox3_str">Beep</string>\r
+    <string name="checkbox4_str">Append "enter"</string>\r
+    <!-- gps -->\r
+    <string name="title_gps">GPS数据</string>\r
+    <string name="gps_disable">GPS功能尚未打开</string>\r
+    <string name="gps_longitude">经度:</string>\r
+    <string name="gps_latitude">纬度:</string>\r
+    <string name="gps_speed">速度:</string>\r
+    <string name="gps_altitude">海拔:</string>\r
+    <string name="gps_direction">方位:</string>\r
+    <string name="gps_searching">正在获取地理位置信息...</string>\r
+    <string name="gps_getloc_failed">"获取地理位置信息失败"</string>\r
+    <!-- motor -->\r
+    <string name="motor_vibrator_frequency">震动时间间隔(ms):</string>\r
+    <string name="motor_vibrator_tm">震动持续时间(ms):</string>\r
+    <string name="motor_bgvibrator_start">开始</string>\r
+    <string name="motor_bgvibrator_stop">结束</string>\r
+    <string name="motor_notfound">设备不支持震动</string>\r
+    <!-- sensor -->\r
+    <string name="sensor_options">设备支持感应器</string>\r
+    <string name="sensor_gravity">重力感应器</string>\r
+    <string name="sensor_accelerometer">加速度感应器</string>\r
+    <string name="sensor_light">光线感应器</string>\r
+    <string name="sensor_data_null">未能获取感应器数据</string>\r
+    <!-- magnetic stripe card -->\r
+    <string name="mag_result_title">刷卡数据统计</string>\r
+    <string name="mag_hint">请刷磁条卡</string>\r
+    <!-- Please brush magnetic stripe card -->\r
+    <string name="count_total_title">刷卡次数:</string>\r
+    <string name="count_track1_title">磁道1成功次数:</string>\r
+    <string name="count_track2_title">磁道2成功次数:</string>\r
+    <string name="count_track3_title">磁道3成功次数:</string>\r
+    <string name="card_data">磁条卡信息</string>\r
+    <string name="card_data_wrong">错误信息</string>\r
+    <!-- print -->\r
+    <string name="print_context">请输入需打印内容</string>\r
+    <string name="printer_context_title">编辑打印内容</string>\r
+    <string name="printer_title">打印</string>\r
+    <string name="printer_temp">"打印机温度: "</string>\r
+    <!-- Printers temperature: -->\r
+    <string name="bt_print_pic">打印图片</string>\r
+    <!-- print Pic -->\r
+    <string name="bt_print_code">打印编码</string>\r
+    <!-- print Code -->\r
+    <string name="bt_print_text">打印文字</string>\r
+    <!-- print Text -->\r
+    <string name="print_hint">请输入打印内容</string>\r
+    <!-- recorder -->\r
+    <string name="none_file">未找到录音文件</string>\r
+    <string name="none_recorded_file">尚未录音</string>\r
+    <string name="recorder_menu_title">录音</string>\r
+    <string name="recorder_files">录音文件</string>\r
+\r
+    <!-- gsm -->\r
+    <string name="gsm_title">GSM信息</string>\r
+    <string name="gsm_refresh">刷新</string>\r
+    <string name="gsm_info_none">未能获取GSM信息</string>\r
+\r
+    <!-- battery -->\r
+    <string name="title_power">电源状态</string>\r
+    <string name="title_battery">电池状态</string>\r
+    <string name="battery_info_status_label" msgid="8109155295509700309">"电池状态:"</string>\r
+    <string name="battery_info_power_label" msgid="7465140230991349382">"是否已插电:"</string>\r
+    <string name="battery_info_scale_label" msgid="3649763192389778437">"当前电池电量:"</string>\r
+    <string name="battery_info_level_label" msgid="8706526709307788737">"上限电池电量:"</string>\r
+    <string name="battery_info_health_label" msgid="6416051542741886958">"电池运行状况:"</string>\r
+    <string name="battery_info_technology_label" msgid="788304533220748681">"电池技术:"</string>\r
+    <string name="battery_info_voltage_label" msgid="8971764146757637863">"电池电压:"</string>\r
+    <!-- <string name="battery_info_voltage_units" msgid="8658490792208288107">"mV"</string> -->\r
+    <string name="battery_info_temperature_label" msgid="1968383098818648037">"电池温度:"</string>\r
+    <!-- <string name="battery_info_temperature_units" msgid="9098950587249987550">"° C"</string> -->\r
+    <string name="battery_info_uptime" msgid="5548545143573527992">"启动后的时间:"</string>\r
+    <string name="battery_info_awake_battery" msgid="2557725975486185849">"使用电池电量的未休眠时间:"</string>\r
+    <string name="battery_info_awake_plugged" msgid="176716874713478188">"充电时的唤醒时间:"</string>\r
+    <string name="battery_info_screen_on" msgid="376277447175613889">"屏幕开启时间:"</string>\r
+    <!--\r
+    <string name="battery_info_status_unknown" msgid="196130600938058547">"未知"</string>\r
+    <string name="battery_info_status_charging" msgid="1705179948350365604">"正在充电"</string>\r
+    <string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(交流电)"</string>\r
+    <string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>\r
+    <string name="battery_info_status_discharging" msgid="6222697503392774475">"正在耗电"</string>\r
+    <string name="battery_info_status_not_charging" msgid="2820070506621483576">"未在充电"</string>\r
+    <string name="battery_info_status_full" msgid="2824614753861462808">"电量充足"</string>\r
+    <string name="battery_info_power_unplugged" msgid="5987246575519551081">"未插电"</string>\r
+    <string name="battery_info_power_ac" msgid="6808516193001604634">"交流电"</string>\r
+    <string name="battery_info_power_usb" msgid="8012931702516331797">"USB"</string>\r
+    <string name="battery_info_power_ac_usb" msgid="6777734146838328688">"交流电 + USB"</string>\r
+    <string name="battery_info_power_unknown" msgid="7344115502868899881">"未知"</string>\r
+    <string name="battery_info_health_unknown" msgid="5664295556921944255">"未知"</string>\r
+    <string name="battery_info_health_good" msgid="8070356565806711806">"正常"</string>\r
+    <string name="battery_info_health_overheat" msgid="8442959549291368806">"过热"</string>\r
+    <string name="battery_info_health_dead" msgid="1725917445762829059">"没电"</string>\r
+    <string name="battery_info_health_over_voltage" msgid="2420269351664490121">"过电压"</string>\r
+    <string name="battery_info_health_unspecified_failure" msgid="6347021103185471590">"未知错误"</string>\r
+    <string name="battery_info_health_cold" msgid="3835692786176707318">"电量低"</string>\r
+\r
+\r
+\r
+\r
+    -->\r
+    <string name="battery_technology_unknwn">"未知"</string>\r
+    <!-- <string name="light">"亮屏了"</string> -->\r
+    <string name="black">"灭屏了"</string>\r
+    <string name="slide"> "请滑动屏幕测试"</string>\r
+    <string name="music_is_run"> "音乐正在播放"</string>\r
+    <string name="sd_status"> "SD状态:已检测到SD卡"</string>\r
+    <string name="sd_tatal"> "总容量:"</string>\r
+    <string name="sd_left">  "剩余容量:" </string>\r
+    <string name="sd_used">  "已用容量:" </string>\r
+    <string name="sd_fail">  "SD状态:未检测到SD卡!" </string>\r
+    <string name="set_tag">  "测试完成,将写入标志位" </string>\r
+    <string name="sim_status">  "SIM状态:SIM 就绪" </string>\r
+    <string name="sim_fail">  "SIM状态:无SIM或SIM卡损坏" </string>\r
+    <string name="china_yidong"> "中国移动"</string>\r
+    <string name="china_lintong"> "中国联通"</string>\r
+    <string name="china_dianxin">  "中国电信" </string>\r
+    <string name="sim_fail1">  "SIM卡过期" </string>\r
+    <string name="benji">  " 工厂测试" </string>\r
+    <string name="gongcheng">  "工厂测试" </string>\r
+    <string name="moshi">  "工程模式" </string>\r
+    <string name="shintool">  "地图拷贝工具" </string>\r
+    <string name="lanya">  "蓝牙测试" </string>\r
+    <string name="lanya_open">  " 蓝牙设备已开启" </string>\r
+    <string name="car_staut">  " 摄像头\n测试结果" </string>\r
+    <string name="start_test">  "开始测试" </string>\r
+    <string name="fm_test">  "FM发射器测试" </string>\r
+    <string name="fm_status">  " FM状态:" </string>\r
+    <string name="fm_tip">  "      提示:将收音机频率调至108.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。" </string>\r
+    <string name="light_test">  "   灭/亮屏测试" </string>\r
+    <string name="light_tip">  "    提示:请按电源键,测试灭/亮屏和电源键,是否正常" </string>\r
+    <string name="light_status">  " 状态:" </string>\r
+    <string name="sd_test">  "SD卡测试" </string>\r
+    <string name="sim_test">  " SIM卡测试" </string>\r
+    <string name="sim_type">  "网络类型" </string>\r
+    <string name="sim_strenth">  "信号强度:" </string>\r
+    <string name="test1">  "PCBA自动测试" </string>\r
+    <string name="test2">  "整机自动测试" </string>\r
+    <string name="touch">  "触摸屏" </string>\r
+    <string name="speak">  "扬声器" </string>\r
+    <string name="camera">  "摄像头" </string>\r
+    <string name="sim_title">"SIM卡" </string>\r
+    <string name="sd_title">"SD卡" </string>\r
+    <string name="mic_title">"麦克风" </string>\r
+    <string name="fm_title">"FM发射" </string>\r
+    <string name="light_title">"灭/亮屏" </string>\r
+    <string name="bt_r">"蓝牙," </string>\r
+    <string name="touch_r">"触摸屏," </string>\r
+    <string name="sim_r">"sim卡," </string>\r
+    <string name="sd_r">"SD卡," </string>\r
+    <string name="mic_r">"双MIC," </string>\r
+    <string name="speak_r">"扬声器," </string>\r
+    <string name="camera_r">"摄像头," </string>\r
+    <string name="fm_r">"FM发射," </string>\r
+    <string name="light_r">"灭/亮屏," </string>\r
+    <string name="barry_r">"电池," </string>\r
+    <string name="pass_r">"已通过的项目:" </string>\r
+    <string name="fail_r">"未通过的项目:" </string>\r
+    <string name="tag_r">"本机NV标志位(1代表通过,0代表未通过):" </string>\r
+    <string name="diglog_r">"请按下图测试,点击任意处,取消该窗口,开始测试" </string>\r
+    <string name="test_r">"测试报告" </string>\r
+    <string name="close_r">"关闭" </string>\r
+    <string name="none">"没有测试记录,完成一次PCBA测试,添加记录" </string>\r
+    <string name="none1">"没有测试记录,完成一次整机自动测试,添加记录" </string>\r
+    <string name="none2">"没有校准记录" </string>\r
+    <string name="jiaju">"PCBA自动测试报告" </string>\r
+    <string name="auto">"整机自动测试报告" </string>\r
+    <string name="jiaju_time">"最近测试时间:" </string>\r
+    <string name="tags">"标志位(按测试顺序):" </string>\r
+    <string name="test_over">"测试完成,将写入标志位" </string>\r
+    <string name="picturing">"正在拍照" </string>\r
+    <string name="recording">"正在录像,请晃动机器测试" </string>\r
+    <string name="pic_over">"拍照完成" </string>\r
+    <string name="write_tag_over">" 已经写入标志位" </string>\r
+    <string name="record1">"录像" </string>\r
+    <string name="photo">"停止" </string>\r
+    <string name="deviceInfo">"版本信息" </string>\r
+    <string name="gsensor">"Gsensor测试" </string>\r
+    <string name="sensor">请旋转手机或屏幕</string>\r
+    <string name="read_data">读取数据</string>\r
+    <string name="sensor_calibration_do_20">进行校准(误差20%)</string>\r
+    <string name="sensor_calibration_do_40">进行校准(误差40%)</string>\r
+    <string name="sensor_calibration_clear">清除校准数据</string>\r
+    <string name="sensor_calibration_note">"   注意:在校准过程中,设备必须处于水平放置状态。"</string>\r
+    <string name="sensor_calibration_intro">"   操作:点击“水平校准”按钮,系统会自动校准,并判断是否成功。点击“清除校准数据”按钮后,校准数据清零,需重新进行水平校准。"</string>\r
+    <string name="sensor_calibration_current_data_hint">加速度传感器当前数据: </string>\r
+    <string name="sensor_calibration_sensor_data_hint">加速度传感器校准数据: </string>\r
+    <string name="sensor_calibration_gsensor">加速度传感器校准</string>\r
+    <string name="record_agin">重新录音</string>\r
+    <string name="bt_tip">请在附近打开蓝牙,观察是否搜索到该蓝牙</string>\r
+    <string name="rf_result">"RF校准标志位:  "</string>\r
+    <string name="rf_gsensor">Rf,Gsensor校准报告</string>\r
+    <string name="sensor_accelerometer1">Gsensor测试</string>\r
+    <string name="sensor_accelerometer2">"Gsensor,"</string>\r
+    <string name="sensor_tip">"       提示:请将机器屏幕分别朝前后左右4个方向,观察箭头变化,只有4个方向都测试通过,才会显示成功。"</string>\r
+    <string name="north">向北</string>\r
+    <string name="sourth">向南</string>\r
+    <string name="weast">向西</string>\r
+    <string name="east">向东</string>\r
+    <string name="gsensor_data">Gsensor参数:</string>\r
+    <string name="auto_tip">该台机器已经做过整机自动测试</string>\r
+    <string name="user_tip">该台机器已经做过PCBA自动测试</string>\r
+    <string name="mic_tip"> "   提示:请选择测试的Mic,然后对着选择的Mic吹气,右图指针转动则判断成功,否则失败。"</string>\r
+    <string name="version_tip"> "显示版本及测试信息"</string>\r
+    <string name="testresult_tip"> "测试结果:"</string>\r
+    <string name="pass_test"> "通过"</string>\r
+    <string name="fail_test"> "未通过"</string>\r
+    <string name="gps_test"> "GPS测试"</string>\r
+    <string name="gsensor_complete"> "Gensor校准"</string>\r
+    <string name="gsensor_20"> "水平校准"</string>\r
+    <string name="gsensor_zhengji"> "整机自动测试: "</string>\r
+    <string name="gsensor_pcba"> "PCBA自动测试: "</string>\r
+    <string name="lamp"> "三色灯 "</string>\r
+    <string name="lamp_tile"> "三色灯测试 "</string>\r
+    <string name="lamp_tip"> "      请观察指示灯颜色变化,如果看到红绿蓝三种颜色依次变化,则判断成功;反之,只看到一种、两种或灯不亮则失败。 "</string>\r
+    <string name="mianmic"> "主Mic测试 "</string>\r
+    <string name="othermic"> "副Mic测试 "</string>\r
+    <string name="resunme"> "恢复出厂设置 "</string>\r
+    <string name="version_new"> "版本及校准"</string>\r
+    <string name="light_new"> "显示屏"</string>\r
+    <string name="button_new"> "按键"</string>\r
+    <string name="leida_new"> "雷达"</string>\r
+    <string name="beiguang_new"> "背光灯"</string>\r
+    <string name="dual_new"> "电话"</string>\r
+    <string name="sigle_new"> "单项测试报告"</string>\r
+    <string name="rf_new"> "Rf校准:"</string>\r
+    <string name="imei_new"> "IMEI号:"</string>\r
+    <string name="clear_new"> "清除测试数据"</string>\r
+    <string name="start_test_new">  "开始测试!" </string>\r
+    <string name="lcd_test_new">  "显示屏测试结果" </string>\r
+    <string name="tf_test_new">  "双TF卡" </string>\r
+    <string name="tf_Detect">  "已检测到" </string>\r
+    <string name="tf_UnDetect">  "未检测到" </string>\r
+    <string name="test_over_new">  "测试结束!" </string>\r
+    <string name="clear_new_wanr">  "确定清除测试数据?" </string>\r
+    <string name="clear_new_yes">  "清除" </string>\r
+    <string name="clear_new_no">  "返回" </string>\r
+    <string name="lamp_new">  "按键灯" </string>\r
+    <string name="lcd_result">LCD测试结果</string>\r
+    <string name="lcd_result_tip">请判断屏幕显示是否正常,有无缺陷</string>\r
+    <string name="key_result_tip">*提示:点击按键灯测试,观察电源键灯光是否亮起</string>\r
+    <string name="tip1">提示:该界面可进行单项测试</string>\r
+    <string name="tip2">标志:通过(绿色),未通过(红色),未测(白色)</string>\r
+    <string name="mac_new">MAC地址:</string>\r
+    <string name="bt_tip_new">操作步骤:\n1.准备一台可拨打电话的手机和一台固定电话\n2.使用手机与后视镜蓝牙连接,然后向固话拨打电话,\n3.接通后,两边能正常通话,则通过.</string>\r
+    <string name="simid_parameters">SIM卡 ICCID</string>\r
+    <string name="vl_up">音量加</string>\r
+    <string name="vl_down">音量减</string>\r
+    <string name="sos">秒帮SOS</string>\r
+\r
+    <string name="total_memory">总内存</string>\r
+    <string name="avail_memory">可用内存</string>\r
+    <string name="open_dialer">正在打开通话界面,请稍后。。。</string>\r
+    <string name="_fail">失败</string>\r
+    <string name="engineerMode">工程模式</string>\r
+    <string name="more">更多设置</string>\r
+    <string name="unbound">解绑</string>\r
+\r
+    <string name="startRecord">开始录音</string>\r
+    <string name="stopRecord">结束录音</string>\r
+    <string name="startPlay">开始播放</string>\r
+    <string name="stopPlay">结束播放</string>\r
+\r
+    <string name="ageing_mode">老化模式</string>\r
+    <string name="ageing_speaker_test">喇叭测试</string>\r
+    <string name="ageing_lcd_test">LCD测试</string>\r
+    <string name="ageing_camera_test">相机测试</string>\r
+    <string name="show_volum">调节音量请点击这里</string>\r
+    <string name="brightness_setting">亮度调节</string>\r
+    <string name="touchtest_toast">请进行触摸屏测试</string>\r
+    <string name="testing_lcd">正在测试LCD</string>\r
+    <string name="testing_backlight">正在测试背光</string>\r
+    <string name="lcdtest_toast">单击可显示亮度进度条,双击可退出</string>\r
+    <string name="speak_toast">请说话</string>\r
+    <string name="stop_record_toast">停止录音</string>\r
+    <string name="playing_toast">开始播放</string>\r
+    <string name="stop_playing_toast">停止播放</string>\r
+    <string name="cid">CID</string>\r
+    <string name="screen_resolution">屏幕分辨率</string>\r
+    <string name="download_mode">流量</string>\r
+    <string name="key_ai">AI键</string>\r
+    <string name="test_keypad1">按键1</string>\r
+    <string name="test_keypad2">按键2</string>\r
+    <string name="ultraviolet">紫外线</string>\r
+    <string name="currentTime">currentTime</string>\r
+    <string name="workTime">workTime</string>\r
+    <string name="wifi_mac_addaress">wifi mac</string>\r
+    <string name="bluethooth_mac_addaress">Bluetooth mac</string>\r
+    <string name="barcode">barcode</string>\r
+    <string name="flag_position">标志位检查</string>\r
+    <string name="heartrate">心率</string>\r
+    <!-- add end -->\r
+\r
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644 (file)
index 0000000..0e8febc
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+    <string-array name="funEableValue">\r
+        <item>false</item>\r
+        <item>false</item>\r
+        <item>false</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>false</item>\r
+        <item>false</item>\r
+        <item>false</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>false</item>\r
+        <item>false</item>\r
+        <item>true</item>\r
+        <item>false</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+        <item>true</item>\r
+    </string-array>\r
+    <string-array name="directionLabels">\r
+        <item>N</item>\r
+        <item>NE</item>\r
+        <item>E</item>\r
+        <item>SE</item>\r
+        <item>NW</item>\r
+        <item>W</item>\r
+        <item>SW</item>\r
+        <item>S</item>\r
+    </string-array>\r
+</resources>\r
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644 (file)
index 0000000..2b8f7ef
--- /dev/null
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+\r
+    <color name="recording_current_shot_text">#ffffffff</color>\r
+    <color name="gray">#ffd3d3d3</color>\r
+\r
+    <!-- add by tyy 2016.9.2 -->\r
+\r
+    <color name="bg_color_white">#ffffffff</color>\r
+    <color name="bg_color">#ffeeeeee</color>\r
+    <color name="list_item_bg_color_focus">#ff33a3dc</color>\r
+    <color name="list_item_bg_color">#ffffffff</color>\r
+    <color name="category_tital">#ffdfdedb</color>\r
+    <color name="color_title">#ff333333</color>\r
+    <color name="color_summery">#ff909090</color>\r
+    <color name="button_black_abovetext_color">#ff595959</color>\r
+    <color name="button_white_abovetext_color">#ffeeeeee</color>\r
+    <color name="button_green_abovetext_color">#ff4e7f11</color>\r
+    <color name="button_press_abovetext_color">#ff7e5000</color>\r
+    <color name="fail">#008000</color>\r
+    <color name="success_normal">#797979</color> \r
+    <color name="success">#B8DF5A</color>\r
+    <color name="keys_color">#B8DF5A</color>\r
+    <color name="press_color">#c0c0c0</color>\r
+    <color name="pass_color">#00ff00</color>\r
+\r
+    <!-- 常用的颜色 -->\r
+    <color name="transparent">#00000000</color> <!-- 透明色 -->\r
+    <color name="translucent">#9000</color> <!-- 半透明色 -->\r
+    <color name="white">#ffffff</color> <!-- 白色 -->\r
+    <color name="ivory">#fffff0</color> <!-- 象牙色 -->\r
+    <color name="lightyellow">#ffffe0</color> <!-- 亮黄色 -->\r
+    <color name="yellow">#ffff00</color> <!-- 黄色 -->\r
+    <color name="snow">#fffafa</color> <!-- 雪白色 -->\r
+    <color name="floralwhite">#fffaf0</color> <!-- 花白色 -->\r
+    <color name="lemonchiffon">#fffacd</color> <!-- 柠檬绸色 -->\r
+    <color name="cornsilk">#fff8dc</color> <!-- 米绸色 -->\r
+    <color name="seaShell">#fff5ee</color> <!-- 海贝色 -->\r
+    <color name="lavenderblush">#fff0f5</color> <!-- 淡紫红 -->\r
+    <color name="papayawhip">#ffefd5</color> <!-- 番木色 -->\r
+    <color name="blanchedalmond">#ffebcd</color> <!-- 白杏色 -->\r
+    <color name="mistyrose">#ffe4e1</color> <!-- 浅玫瑰色 -->\r
+    <color name="bisque">#ffe4c4</color> <!-- 桔黄色 -->\r
+    <color name="moccasin">#ffe4b5</color> <!-- 鹿皮色 -->\r
+    <color name="navajowhite">#ffdead</color> <!-- 纳瓦白 -->\r
+    <color name="peachpuff">#ffdab9</color> <!-- 桃色 -->\r
+    <color name="gold">#ffd700</color> <!-- 金色 -->\r
+    <color name="pink">#ffc0cb</color> <!-- 粉红色 -->\r
+    <color name="lightpink">#ffb6c1</color> <!-- 亮粉红色 -->\r
+    <color name="orange">#ffa500</color> <!-- 橙色 -->\r
+    <color name="lightsalmon">#ffa07a</color> <!-- 亮肉色 -->\r
+    <color name="darkorange">#ff8c00</color> <!-- 暗桔黄色 -->\r
+    <color name="coral">#ff7f50</color> <!-- 珊瑚色 -->\r
+    <color name="hotpink">#ff69b4</color> <!-- 热粉红色 -->\r
+    <color name="tomato">#ff6347</color> <!-- 西红柿色 -->\r
+    <color name="orangered">#ff4500</color> <!-- 红橙色 -->\r
+    <color name="deeppink">#ff1493</color> <!-- 深粉红色 -->\r
+    <color name="fuchsia">#ff00ff</color> <!-- 紫红色 -->\r
+    <color name="magenta">#ff00ff</color> <!-- 红紫色 -->\r
+    <color name="red">#ff0000</color> <!-- 红色 -->\r
+    <color name="oldlace">#fdf5e6</color> <!-- 老花色 -->\r
+    <color name="lightgoldenrodyellow">#fafad2</color> <!-- 亮金黄色 -->\r
+    <color name="linen">#faf0e6</color> <!-- 亚麻色 -->\r
+    <color name="antiquewhite">#faebd7</color> <!-- 古董白 -->\r
+    <color name="salmon">#fa8072</color> <!-- 鲜肉色 -->\r
+    <color name="ghostwhite">#f8f8ff</color> <!-- 幽灵白 -->\r
+    <color name="mintcream">#f5fffa</color> <!-- 薄荷色 -->\r
+    <color name="whitesmoke">#f5f5f5</color> <!-- 烟白色 -->\r
+    <color name="beige">#f5f5dc</color> <!-- 米色 -->\r
+    <color name="wheat">#f5deb3</color> <!-- 浅黄色 -->\r
+    <color name="sandybrown">#f4a460</color> <!-- 沙褐色 -->\r
+    <color name="azure">#f0ffff</color> <!-- 天蓝色 -->\r
+    <color name="honeydew">#f0fff0</color> <!-- 蜜色 -->\r
+    <color name="aliceblue">#f0f8ff</color> <!-- 艾利斯兰 -->\r
+    <color name="khaki">#f0e68c</color> <!-- 黄褐色 -->\r
+    <color name="lightcoral">#f08080</color> <!-- 亮珊瑚色 -->\r
+    <color name="palegoldenrod">#eee8aa</color> <!-- 苍麒麟色 -->\r
+    <color name="violet">#ee82ee</color> <!-- 紫罗兰色 -->\r
+    <color name="darksalmon">#e9967a</color> <!-- 暗肉色 -->\r
+    <color name="lavender">#e6e6fa</color> <!-- 淡紫色 -->\r
+    <color name="lightcyan">#e0ffff</color> <!-- 亮青色 -->\r
+    <color name="burlywood">#deb887</color> <!-- 实木色 -->\r
+    <color name="plum">#dda0dd</color> <!-- 洋李色 -->\r
+    <color name="gainsboro">#dcdcdc</color> <!-- 淡灰色 -->\r
+    <color name="crimson">#dc143c</color> <!-- 暗深红色 -->\r
+    <color name="palevioletred">#db7093</color> <!-- 苍紫罗兰色 -->\r
+    <color name="goldenrod">#daa520</color> <!-- 金麒麟色 -->\r
+    <color name="orchid">#da70d6</color> <!-- 淡紫色 -->\r
+    <color name="thistle">#d8bfd8</color> <!-- 蓟色 -->\r
+    <color name="lightgrey">#d3d3d3</color> <!-- 亮灰色 -->\r
+    <color name="tan">#d2b48c</color> <!-- 茶色 -->\r
+    <color name="chocolate">#d2691e</color> <!-- 巧可力色 -->\r
+    <color name="peru">#cd853f</color> <!-- 秘鲁色 -->\r
+    <color name="indianred">#cd5c5c</color> <!-- 印第安红 -->\r
+    <color name="mediumvioletred">#c71585</color> <!-- 中紫罗兰色 -->\r
+    <color name="silver">#c0c0c0</color> <!-- 银色 -->\r
+    <color name="darkkhaki">#bdb76b</color> <!-- 暗黄褐色 -->\r
+    <color name="rosybrown">#bc8f8f</color> <!-- 褐玫瑰红 -->\r
+    <color name="mediumorchid">#ba55d3</color> <!-- 中粉紫色 -->\r
+    <color name="darkgoldenrod">#b8860b</color> <!-- 暗金黄色 -->\r
+    <color name="firebrick">#b22222</color> <!-- 火砖色 -->\r
+    <color name="powderblue">#b0e0e6</color> <!-- 粉蓝色 -->\r
+    <color name="lightsteelblue">#b0c4de</color> <!-- 亮钢兰色 -->\r
+    <color name="paleturquoise">#afeeee</color> <!-- 苍宝石绿 -->\r
+    <color name="greenyellow">#adff2f</color> <!-- 黄绿色 -->\r
+    <color name="lightblue">#add8e6</color> <!-- 亮蓝色 -->\r
+    <color name="darkgrey">#a9a9a9</color> <!-- 暗灰色 -->\r
+    <color name="brown">#a52a2a</color> <!-- 褐色 -->\r
+    <color name="sienna">#a0522d</color> <!-- 赭色 -->\r
+    <color name="darkorchid">#9932cc</color> <!-- 暗紫色 -->\r
+    <color name="palegreen">#98fb98</color> <!-- 苍绿色 -->\r
+    <color name="darkviolet">#9400d3</color> <!-- 暗紫罗兰色 -->\r
+    <color name="mediumpurple">#9370db</color> <!-- 中紫色 -->\r
+    <color name="lightgreen">#90ee90</color> <!-- 亮绿色 -->\r
+    <color name="darkseagreen">#8fbc8f</color> <!-- 暗海兰色 -->\r
+    <color name="saddlebrown">#8b4513</color> <!-- 重褐色 -->\r
+    <color name="darkmagenta">#8b008b</color> <!-- 暗洋红 -->\r
+    <color name="darkred">#8b0000</color> <!-- 暗红色 -->\r
+    <color name="blueviolet">#8a2be2</color> <!-- 紫罗兰蓝色 -->\r
+    <color name="lightskyblue">#87cefa</color> <!-- 亮天蓝色 -->\r
+    <color name="skyblue">#87ceeb</color> <!-- 天蓝色 -->\r
+    <color name="grey">#808080</color> <!-- 灰色 -->\r
+    <color name="olive">#808000</color> <!-- 橄榄色 -->\r
+    <color name="purple">#800080</color> <!-- 紫色 -->\r
+    <color name="maroon">#800000</color> <!-- 粟色 -->\r
+    <color name="aquamarine">#7fffd4</color> <!-- 碧绿色 -->\r
+    <color name="chartreuse">#7fff00</color> <!-- 黄绿色 -->\r
+    <color name="lawngreen">#7cfc00</color> <!-- 草绿色 -->\r
+    <color name="mediumslateblue">#7b68ee</color> <!-- 中暗蓝色 -->\r
+    <color name="lightslategrey">#778899</color> <!-- 亮蓝灰 -->\r
+    <color name="slategrey">#708090</color> <!-- 灰石色 -->\r
+    <color name="olivedrab">#6b8e23</color> <!-- 深绿褐色 -->\r
+    <color name="slateblue">#6a5acd</color> <!-- 石蓝色 -->\r
+    <color name="dimgrey">#696969</color> <!-- 暗灰色 -->\r
+    <color name="mediumaquamarine">#66cdaa</color> <!-- 中绿色 -->\r
+    <color name="cornflowerblue">#6495ed</color> <!-- 菊兰色 -->\r
+    <color name="cadetblue">#5f9ea0</color> <!-- 军兰色 -->\r
+    <color name="darkolivegreen">#556b2f</color> <!-- 暗橄榄绿 -->\r
+    <color name="indigo">#4b0082</color> <!-- 靛青色 -->\r
+    <color name="mediumturquoise">#48d1cc</color> <!-- 中绿宝石 -->\r
+    <color name="darkslateblue">#483d8b</color> <!-- 暗灰蓝色 -->\r
+    <color name="steelblue">#4682b4</color> <!-- 钢兰色 -->\r
+    <color name="royalblue">#4169e1</color> <!-- 皇家蓝 -->\r
+    <color name="turquoise">#40e0d0</color> <!-- 青绿色 -->\r
+    <color name="mediumseagreen">#3cb371</color> <!-- 中海蓝 -->\r
+    <color name="limegreen">#32cd32</color> <!-- 橙绿色 -->\r
+    <color name="darkslategrey">#2f4f4f</color> <!-- 暗瓦灰色 -->\r
+    <color name="seagreen">#2e8b57</color> <!-- 海绿色 -->\r
+    <color name="forestgreen">#228b22</color> <!-- 森林绿 -->\r
+    <color name="lightseagreen">#20b2aa</color> <!-- 亮海蓝色 -->\r
+    <color name="dodgerblue">#1e90ff</color> <!-- 闪兰色 -->\r
+    <color name="midnightblue">#191970</color> <!-- 中灰兰色 -->\r
+    <color name="aqua">#00ffff</color> <!-- 浅绿色 -->\r
+    <color name="cyan">#00ffff</color> <!-- 青色 -->\r
+    <color name="springgreen">#00ff7f</color> <!-- 春绿色 -->\r
+    <color name="lime">#00ff00</color> <!-- 酸橙色 -->\r
+    <color name="mediumspringgreen">#00fa9a</color> <!-- 中春绿色 -->\r
+    <color name="darkturquoise">#00ced1</color> <!-- 暗宝石绿 -->\r
+    <color name="deepskyblue">#00bfff</color> <!-- 深天蓝色 -->\r
+    <color name="darkcyan">#008b8b</color> <!-- 暗青色 -->\r
+    <color name="teal">#008080</color> <!-- 水鸭色 -->\r
+    <color name="green">#008000</color> <!-- 绿色 -->\r
+    <color name="darkgreen">#006400</color> <!-- 暗绿色 -->\r
+    <color name="blue">#0000ff</color> <!-- 蓝色 -->\r
+    <color name="mediumblue">#0000cd</color> <!-- 中兰色 -->\r
+    <color name="darkblue">#00008b</color> <!-- 暗蓝色 -->\r
+    <color name="navy">#000080</color> <!-- 海军色 -->\r
+    <color name="black">#000000</color> <!-- 黑色 -->\r
+    <color name="sub_menu_title_color">#B2B2B2</color> <!-- 黑色 -->\r
+\r
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644 (file)
index 0000000..295b5a9
--- /dev/null
@@ -0,0 +1,5 @@
+<resources>\r
+    <!-- Default screen margins, per the Android Design guidelines. -->\r
+    <dimen name="activity_horizontal_margin">16dp</dimen>\r
+    <dimen name="activity_vertical_margin">16dp</dimen>\r
+</resources>\r
diff --git a/app/src/main/res/values/drawables.xml b/app/src/main/res/values/drawables.xml
new file mode 100644 (file)
index 0000000..5f79941
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+    <item type="drawable" name="white">#fff5f5f5</item>\r
+    <item type="drawable" name="black">#ff000000</item>\r
+    <item type="drawable" name="grey">#ffdcdcdc</item>\r
+    <item type="drawable" name="green">#ff008000</item>\r
+    <item type="drawable" name="lightGreen">#ffc2d69a</item>\r
+    <item type="drawable" name="silver">#ffcccccc</item>\r
+    <item type="drawable" name="lightGrey">#ff8f8f8f</item>\r
+    <item type="drawable" name="deepGrey">#ff303538</item>\r
+    <item type="drawable" name="lightOrange">#fffaaf65</item>\r
+</resources>\r
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644 (file)
index 0000000..08c17af
--- /dev/null
@@ -0,0 +1,909 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources>\r
+    <string name="project" translatable="false">Kdragon_80_t11</string>\r
+    <string name="KEY_POWER" translatable="false">false</string>\r
+    <string name="KEY_VLUP" translatable="false">true</string>\r
+    <string name="KEY_VLDOWN" translatable="false">true</string>\r
+    <string name="KEY_SEARCH" translatable="false">false</string>\r
+    <string name="KEY_HOME" translatable="false">true</string>\r
+    <string name="KEY_MENU" translatable="false">true</string>\r
+    <string name="KEY_BACK" translatable="false">true</string>\r
+    <string name="KEY_CAMERA" translatable="false">false</string>\r
+    <string name="KEY_EARPHONE" translatable="false">false</string>\r
+    <string name="timer_format" formatted="false" translatable="false">%02d:%02d</string>\r
+    <string name="app_name">FactoryMode</string>\r
+    <string name="otaupdate">OTA Update</string>\r
+    <string name="light">Light_induction</string>\r
+    <string name="noLight">Could not get brightness value</string>\r
+    <string name="defaultlightness">Getting_brightness</string>\r
+    <string name="lightness">brightness</string>\r
+    <string name="lightTip">Tip: the phone is positive toward the light source is conducive to faster access to brightness</string>\r
+    <string name="magnetic">Magnetic_induction</string>\r
+    <string name="magneticX">Magnetic field x</string>\r
+    <string name="magneticY">Magnetic field Y</string>\r
+    <string name="magneticZ">Magnetic field Z</string>\r
+    <string name="gravity">Gravity induction</string>\r
+    <string name="gravityX">Gravity x</string>\r
+    <string name="gravityY">Gravity Y</string>\r
+    <string name="gravityZ">Gravity Z</string>\r
+    <string name="shakeTest">Vibration_test</string>\r
+    <string name="shakeClick">Click_shock</string>\r
+    <string name="noShake">Does not support the mobile phone vibration</string>\r
+    <string name="keysTest">Key test</string>\r
+    <string name="keyPower">Power</string>\r
+    <string name="keyVLDown">VLUp</string>\r
+    <string name="keyVLUP">VLDown</string>\r
+    <string name="keySearch">Search</string>\r
+    <string name="keyHome">Home</string>\r
+    <string name="keyMenu">Menu</string>\r
+    <string name="keyBack">Back</string>\r
+    <string name="keyCamera">Camera</string>\r
+    <string name="keyCall">Call</string>\r
+    <string name="keyEndCall">EndCall</string>\r
+    <string name="empty">--</string>\r
+    <string name="detectSim">Sim card detection</string>\r
+    <string name="detectSim1">Detection Sim1</string>\r
+    <string name="detectSim2">Detection Sim2</string>\r
+    <string name="sim1">Sim1</string>\r
+    <string name="sim2">Sim2</string>\r
+    <string name="cardTest">SDcardtest</string>\r
+    <string name="cardAvail">Insert SD card</string>\r
+    <string name="cardFreeSize">Available space</string>\r
+    <string name="cardUsedSize">used space</string>\r
+    <string name="cardTotalSize">SD card capacity</string>\r
+    <string name="card2TotalSize">SD2 card capacity</string>\r
+    <string name="checkSum">Checksum</string>\r
+    <string name="nandFlash">Cell phone memory</string>\r
+    <string name="manufacturerID">Manufacturer ID</string>\r
+    <string name="deviceID">device ID</string>\r
+    <string name="rwTestResult">Read and write test results</string>\r
+    <string name="signalTest">Signal test</string>\r
+    <string name="signalRsult">Signal test results</string>\r
+    <string name="signalTestError">Signal test failure</string>\r
+    <string name="emergencyCall">Call 112</string>\r
+    <string name="chinaMoveCall">Call 10086</string>\r
+    <string name="emergencyCallSuccess">Call an emergency call success</string>\r
+    <string name="emergencyCallFail">Call emergency failure</string>\r
+    <string name="headsetTest">Headset test</string>\r
+    <string name="headsetAvail">There is no headset</string>\r
+    <string name="startMusic">play</string>\r
+    <string name="headsetButton">According to the remote control button</string>\r
+    <string name="gpsTest">GPS location</string>\r
+    <string name="gpsLongitude">longitude</string>\r
+    <string name="gpsDimensions">latitude</string>\r
+    <string name="coldRestart">cold boot</string>\r
+    <string name="hotRestart">Hot start</string>\r
+    <string name="noPosition">No geographic information</string>\r
+    <string name="gpsTTFF">GPS TTFF</string>\r
+    <string name="gpslocation">Getting GPS location information...</string>\r
+    <string name="sec">sec</string>\r
+    <string name="fmTest">Screen brightness</string>\r
+    <string name="fmSetFreq">channel</string>\r
+    <string name="rssi">RSSI</string>\r
+    <string name="mhz">MHZ</string>\r
+    <string name="dbm">(dBm)</string>\r
+    <string name="testFreq0">Test Freq 0</string>\r
+    <string name="testFreq1">Test Freq 1</string>\r
+    <string name="testFreq2">Test Freq 2</string>\r
+    <string name="testFreq3">Test Freq 3</string>\r
+    <string name="bluetooth">Bluetooth test</string>\r
+    <string name="blState">Bluetooth status</string>\r
+    <string name="blOpen">Turn on Bluetooth</string>\r
+    <string name="blOpened">Bluetooth is turned on</string>\r
+    <string name="blNoSerport">The current phone does not support Bluetooth</string>\r
+    <string name="bldenied">Bluetooth has been banned</string>\r
+    <string name="blScan">Bluetooth scan</string>\r
+    <string name="blScaning">Scanning Bluetooth device</string>\r
+    <string name="wifitest">WIFI test</string>\r
+    <string name="wfState">WIFI state</string>\r
+    <string name="wfOpen">Start WIFI</string>\r
+    <string name="wfScan">WIFI scan</string>\r
+    <string name="wfScaning">Is sweeping the hot spots</string>\r
+    <string name="cameraTest">Camera test</string>\r
+    <string name="mainCamera">Main camera</string>\r
+    <string name="subCamera">Vice camera</string>\r
+    <string name="ringtone">Bell test</string>\r
+    <string name="ringStart">Click play</string>\r
+    <string name="receiverTest">Receiver test</string>\r
+    <string name="loopback">Microphone test</string>\r
+    <string name="mic1">Mobile phone microphone test</string>\r
+    <string name="mic2">Headphone microphone test</string>\r
+    <string name="receiverStart">Click play</string>\r
+    <string name="colon">:</string>\r
+    <string name="nothing">nothing</string>\r
+    <string name="ok">correct</string>\r
+    <string name="found">find</string>\r
+    <string name="tsb">Taiwan equipment</string>\r
+    <string name="returnBack">return</string>\r
+    <string name="getInfo">Getting information...</string>\r
+    <string name="noFoundDev">No devices found</string>\r
+    <string name="noMainC">Rear facing camera is not supported</string>\r
+    <string name="noSubC">Rear facing camera is not supported</string>\r
+    <string name="gpsOk">GPS module normal</string>\r
+    <string name="pleaseOpGps">Please open the GPS first!</string>\r
+    <string name="waitForpo">Wait for location information</string>\r
+    <string name="state">state</string>\r
+    <string name="have">yes</string>\r
+    <string name="yes">yes</string>\r
+    <string name="no">no</string>\r
+    <string name="_fail">Fail</string>\r
+    <string name="checkFail">Failure detection</string>\r
+    <string name="rwCheckSuccess">Reading and writing test success</string>\r
+    <string name="rwCheckFail">Reading and writing test success</string>\r
+    <string name="dailSuccess">Call success</string>\r
+    <string name="dailFail">Call failed</string>\r
+    <string name="grd">A hot spot</string>\r
+    <string name="foundNoHot">Did not search to the hot spots</string>\r
+    <string name="openWififail">WIFI startup failed</string>\r
+    <string name="scanBegin">Start scanning</string>\r
+    <string name="wifiOpening">Starting WIFI...</string>\r
+    <string name="wifiOpen">WIFI has been started</string>\r
+    <string name="noSuportWifi">Does not support WIFI</string>\r
+    <string name="pleaseInsertHS">Please insert the headset</string>\r
+    <string name="pleaseOffHS">Please unplug the headset</string>\r
+    <string name="record">sound recording</string>\r
+    <string name="recordStart">Is recording</string>\r
+    <string name="stop">stop it</string>\r
+    <string name="recordstop">Stop status</string>\r
+    <string name="play">play</string>\r
+    <string name="delete">delete</string>\r
+    <string name="recordFile">Recording file</string>\r
+    <string name="testTouchScreen">touch screen</string>\r
+    <string name="TouchScreen">TouchScreen</string>\r
+    <string name="TouchScreen_HandWriting">TouchScreen_HandWriting</string>\r
+    <string name="TouchScreen_Verification">TouchScreen_Verification</string>\r
+    <string name="TouchScreen_VerificationPoint">TouchScreen_VerificationPoint</string>\r
+    <string name="TouchScreen_VerificationLine">TouchScreen_VerificationLine</string>\r
+    <string name="TouchScreen_VerificationShaking">TouchScreen_VerificationShaking</string>\r
+    <string name="TouchScreen_MultiTouch">TouchScreen_MultiTouch</string>\r
+    <string name="TouchScreen_Settings_TextValue">The value</string>\r
+    <string name="TouchScreen_Settings_TextSpinner">Category</string>\r
+    <string name="TouchScreen_Settings_TextSet">Set</string>\r
+    <string name="TouchScreen_Settings">Settings</string>\r
+    <string name="TouchScreen_Settings_Value">0</string>\r
+    <string name="TouchScreen_Settings_sdcard">OFF</string>\r
+    <string name="TouchScreen_Settings_uart">OFF</string>\r
+    <string name="TouchScreen_Settings_TextUart">Enable Uart Log</string>\r
+    <string name="TouchScreen_Settings_TextSDcard">Enable SD card Log</string>\r
+    <string name="power">Electricity</string>\r
+    <string name="noPower">Unable to obtain power</string>\r
+    <string name="nowState">current state</string>\r
+    <string name="playrecord">Being played</string>\r
+    <string name="recordFirst">No audio file, please record</string>\r
+    <string name="palyfinish">Play end</string>\r
+    <string name="distanceSensor">Distance sensing</string>\r
+    <string name="noDistanceSensor">No distance sensing information</string>\r
+    <string name="inDistance">Object approach</string>\r
+    <string name="outDistance">Object departure</string>\r
+    <string name="distanceTip">Tip: hand block / leave screen at the top of the test</string>\r
+    <string name="largestSound">Max volume play</string>\r
+    <string name="capture">Capture</string>\r
+    <string name="cameraMotor">Camera motor</string>\r
+    <string name="pullFar">Pull to the maximum</string>\r
+    <string name="pullClose">Pull to the minimum</string>\r
+    <string name="pullLoop">Cycle focus</string>\r
+    <string name="pullStopLoop">Stop cycle focus</string>\r
+    <string name="matvTest">TV signal test</string>\r
+    <string name="press">Hold down</string>\r
+    <string name="release">let go</string>\r
+    <string name="lastOne">Last one</string>\r
+    <string name="nextOne">Next one</string>\r
+    <string name="singleTest">single test</string>\r
+    <string name="read_imei">Display IMEI number</string>\r
+    <string name="modify_imei_sim1">Modify SIM1</string>\r
+    <string name="modify_imei_sim2">Modify SIM2</string>\r
+    <string name="input_imei_title">Please enter a new IMEI number</string>\r
+    <string name="autoTest">Automatic testing</string>\r
+    <string name="pcbaTest">PCBA testing</string>\r
+    <string name="sysVersion">edition</string>\r
+    <string name="reStore">Restore factory settings</string>\r
+    <string name="mediaTest">mediaTest</string>\r
+    <string name="readAPN">APN query</string>\r
+    <string name="sim_lock_settings">SIM card lock function setting</string>\r
+    <string name="modify_imei">Modify IMEI number</string>\r
+    <string name="testReport">Test report</string>\r
+    <string name="beginTestGPS">Click start GPS test</string>\r
+    <string name="beginTestTM">Click start FM test</string>\r
+    <string name="beginTestCamera">Click to start the camera test</string>\r
+    <string name="beginTestMtv">Click to start the TV signal test</string>\r
+    <string name="beginTestCmotor">Click to start the camera motor test</string>\r
+    <string name="beginTestScreenTouch">beginTestScreenTouch</string>\r
+    <string name="beginTestMulitScreenTouch">beginTestMulitScreenTouch</string>\r
+    <string name="testSucess">success</string>\r
+    <string name="testFail">fail</string>\r
+    <string name="testReprot">Test report</string>\r
+    <string name="bbChip">BB Chip</string>\r
+    <string name="msBoard">MS Board</string>\r
+    <string name="modemVer">Modem Ver</string>\r
+    <string name="buildTime">Build Time</string>\r
+    <string name="buildNumber">Build Number</string>\r
+    <string name="uBootVer">UBoot Ver</string>\r
+    <string name="kernelVer">Kernel Ver</string>\r
+    <string name="androidVer">Android Ver</string>\r
+    <string name="swVer">SW Ver</string>\r
+    <string name="verno">Custom Build Verno</string>\r
+    <string name="deviceInfoDefault">unKnown</string>\r
+    <string name="isLatestOne">Is the last one</string>\r
+    <string name="isTopOne">Is the last one</string>\r
+    <string name="reScan">Re scan</string>\r
+    <string name="versionTest">Version test</string>\r
+    <string name="flashLightTest">Flash test</string>\r
+    <string name="openLight">open</string>\r
+    <string name="closeLight">close</string>\r
+    <string name="appsPath">Application path</string>\r
+    <string name="defaultPath">mnt/sdcard/apps</string>\r
+    <string name="installPath">Installation location</string>\r
+    <string name="sdCard">SDCard</string>\r
+    <string name="phone">mobile phone</string>\r
+    <string name="startInstall">Start installation</string>\r
+    <string name="selectInsLocation">Please select the installation location</string>\r
+    <string name="noApps">No application can be installed</string>\r
+    <string name="nowInstall">Being installed</string>\r
+    <string name="submit">determine</string>\r
+    <string name="unbound_cancel">cancel</string>\r
+    <string name="installFinish">Installation end</string>\r
+    <string name="installSoft">Installation software</string>\r
+    <string name="cmmbTest">mobile TV</string>\r
+    <string name="bCmmbTest">Click to enter the mobile TV test</string>\r
+    <string name="setMac">Write WIFI/ Bluetooth MAC address</string>\r
+    <string name="phoneDetail">Device Status</string>\r
+    <string name="imei">IMEI</string>\r
+\r
+    <string name="imei_invalid">invalid</string>\r
+    <string name="imei_write_successful">Write IMEI number is successful, please restart the phone into effect!</string>\r
+    <string name="imei_wirte_fail">Write IMEI number failed, please enter the correct IMEI number!</string>\r
+    <string name="storage">storage</string>\r
+    <string name="sdcard_storage">SD card storage available / total</string>\r
+    <string name="phone_storage">Internal storage available / total</string>\r
+    <string name="mac">MAC</string>\r
+    <string name="bt">Bluetooth</string>\r
+    <string name="wifi">WIFI</string>\r
+    <string name="checkDir">SD card structure</string>\r
+    <string name="installedSoft">Installed applications</string>\r
+    <string name="cpsdcard2">Copy_sdcard2</string>\r
+    <string name="cpsdcard2Hint">Click OK to copy all the files on the SDCard2 to SDCard, the same name of the file will be covered, to confirm the copy?</string>\r
+    <string name="cpsdcard2ing">Being copied...</string>\r
+    <string name="cpsdcard2finish">copy complete</string>\r
+    <string name="agree">confirm</string>\r
+    <string name="cancel">close</string>\r
+    <string name="srcDir">Source directory</string>\r
+    <string name="tarDir">Target directory</string>\r
+    <string name="srcPath">/mnt/sdcard2</string>\r
+    <string name="tarPath">/mnt/sdcard/miki</string>\r
+    <string name="version_label">Version</string>\r
+    <string name="sw_label">[SW VERSION]</string>\r
+    <string name="hw_label">[HW VERSION]</string>\r
+    <string name="btn_close">Close</string>\r
+    <string name="sw_and_hw">Version</string>\r
+    <string name="sn">SN</string>\r
+    <string name="sn_invalid">Invalid</string>\r
+    <string name="hw">Cosmote-ver1</string>\r
+    <string name="sw">Cosmote_</string>\r
+    <string name="vk_hw">Cosmote-ver1</string>\r
+    <string name="vk_sw">Cosmote_</string>\r
+    <string name="no_ota_file">There is no software version found.Please put the software version in the SDcard or internal storage.</string>\r
+    <string name="update_from_sd">upgrade</string>\r
+    <string name="update_make_sure_to_continue">This operation is not restored, are you sure?</string>\r
+    <string name="update_confirm">Yes</string>\r
+\r
+    <string name="update_make_sure_and_select_file">This operation is not restored, such as determining if you click on the button to select the upgrade file.</string>\r
+    <string name="update_select_file">Select file</string>\r
+    <string name="update_write_file_faild">fail to write to file</string>\r
+    <string name="update_file_wrong">File type error, or can not find the upgrade file</string>\r
+    <string name="update_make_sure_to_update">Do you need to upgrade the software?(Please put the software version in the SDcard or internal storage)</string>\r
+    <string name="TestMedia">TestMedia</string>\r
+    <string name="sdcardfile">SDcard</string>\r
+    <string name="buildIn">buildIn</string>\r
+    <string name="no_compass">No magnetic sensor found</string>\r
+    <string name="test_tv_SMT">SMT test</string>\r
+    <string name="test_tv_ZZ">Assembly test</string>\r
+    <string name="test_tv_Retain">Comprehensive test</string>\r
+    <string name="apn_mcc">MCC:</string>\r
+    <string name="apn_mnc">MNC:</string>\r
+    <string name="imei1">IMEI1</string>\r
+    <string name="apn_search">Search</string>\r
+    <string name="lcdTest">LCD</string>\r
+    <string name="lcdTest_lsn">LCD</string>\r
+    <string name="phoneTest">Telephone</string>\r
+    <string name="bgLightTest">Background light test</string>\r
+    <string name="bgLightStrong">Strong backlight</string>\r
+    <string name="bgLightWeak">Weak backlight</string>\r
+    <string name="imei_ok">determine</string>\r
+    <string name="imei2">imei2</string>\r
+    <string name="sorry_again">Sorry, your input is not correct. Please try again!</string>\r
+    <string name="ramTest">Ram</string>\r
+    <string name="romTest">Rom</string>\r
+    <string name="ramromTest">Memory!</string>\r
+    <string name="otgTest">OTG test</string>\r
+    <string name="otg_disconnect">No OTG device connection</string>\r
+    <string name="otg_connect">Detecting device</string>\r
+    <string name="powerBatteryTest">Power charge test</string>\r
+    <string name="power_charge_battery_state">Charging status</string>\r
+    <string name="power_current_battery">Current power</string>\r
+    <string name="power_battery">battery level</string>\r
+    <string name="power_state">Power state</string>\r
+    <string name="power_current_voltage">Current voltage</string>\r
+    <string name="power_temperature">Power supply temperature</string>\r
+    <string name="power_skill">Power technology</string>\r
+    <string name="power_electric">Battery terminal current</string>\r
+    <string name="power_time">Self starting time</string>\r
+    <string name="battery_info_power_unplugged">Not plugged in</string>\r
+    <string name="battery_info_power_ac">alternating current</string>\r
+    <string name="battery_info_power_usb">USB</string>\r
+    <string name="battery_info_power_wireless">wireless</string>\r
+    <string name="battery_info_power_ac_usb">alternating current + USB</string>\r
+    <string name="battery_info_power_unknown">未知</string>\r
+    <string name="battery_info_health_unknown">unknown</string>\r
+    <string name="battery_info_health_good">Good</string>\r
+    <string name="battery_info_health_overheat">overheated</string>\r
+    <string name="battery_info_health_dead">No electricity</string>\r
+    <string name="battery_info_health_over_voltage">Over voltage</string>\r
+    <string name="battery_info_health_unspecified_failure">unknown error</string>\r
+    <string name="battery_info_health_cold">Low power</string>\r
+    <string name="battery_info_temperature_units">° C</string>\r
+    <string name="beginPhoneTest">Click to start the phone test</string>\r
+    <string name="imeisnTest">IMEI/SN</string>\r
+    <string name="key_ear">Earphone button</string>\r
+    <string name="kernel_specified">**********</string>\r
+    <string name="kernelVer1">Kernel Ver1</string>\r
+    <string name="sim_lock">SIM card lock function</string>\r
+    <string name="call_fun">Call test</string>\r
+    <string name="begincall">Click Start test call</string>\r
+\r
+    <string name="battery_status">Battery status : </string>\r
+    <string name="battery_info_status_charging">Charging</string>\r
+    <string name="battery_v">Battery voltage : </string>\r
+    <string name="battery_temp">Battery temperature : </string>\r
+    <string name="battery_info_status_charging_ac">(AC)</string>\r
+    <string name="battery_info_status_charging_usb">(USB)</string>\r
+    <string name="battery_info_status_discharging">Not charging</string>\r
+    <string name="battery_info_status_not_charging">Not charging</string>\r
+    <string name="battery_info_status_full">Full</string>\r
+    <string name="battery_info_status_unknown">Unknown</string>\r
+    <string name="battery_info_voltage_units">mV</string>\r
+    <string name="battery_level">Battery level : </string>\r
+    <string name="battery_health">Battery health : </string>\r
+\r
+\r
+    <string name="battery_charging">Battery Charging Test</string>\r
+    <string name="ins_gsensor">Please turn over the phone to complete the test!</string>\r
+    <string name="ins_gsensor_toast">Pass!</string>\r
+\r
+    <string name="bt_empty" translatable="false"></string>\r
+\r
+    <string name="isZoom_y">PASS!</string>\r
+\r
+    <string name="isZoom_n">FAIL!</string>\r
+    <string name="rf_parameters">rf</string>\r
+    <string name="simid_parameters">SimSerialNumber</string>\r
+    <string name="vl_up">VLUp</string>\r
+    <string name="vl_down">VLDown</string>\r
+    <string name="sos">miaoSoS</string>\r
+    <string name="ageing_mode">Ageing mode</string>\r
+    <string name="ageing_speaker_test">Speaker test</string>\r
+    <string name="ageing_lcd_test">LCD test</string>\r
+    <string name="ageing_camera_test">Camera test</string>\r
+    <string name="show_volum">To adjust the volume, please click here</string>\r
+    <string name="brightness_setting">Dimming</string>\r
+\r
+    <string name="start_test_new">Start Testing</string>\r
+    <string name="benji">Factory test</string>\r
+    <string name="resunme">Reset</string>\r
+    <string name="tip2">Logo: pass (green), not pass (red), not measured (white)</string>\r
+    <string name="clear_new">Clear the test data</string>\r
+    <string name="version_new">Version and calibration</string>\r
+    <string name="touch">Touch screen</string>\r
+    <string name="light_new">Display screen</string>\r
+    <string name="camera">Camera</string>\r
+    <string name="speak">Speaker</string>\r
+    <string name="mic_title">Microphone</string>\r
+    <string name="sim_title">SIM card</string>\r
+    <string name="dual_new">Phone</string>\r
+    <string name="beiguang_new">Backlight</string>\r
+    <string name="gps">GPS</string>\r
+    <string name="startRecord">Start recording</string>\r
+    <string name="stopRecord">Stop recording</string>\r
+    <string name="startPlay">Start playing</string>\r
+    <string name="stopPlay">Stop play</string>\r
+    <string name="engineerMode">Engineering model</string>\r
+    <string name="more">More settings</string>\r
+    <string name="unbound">Unbound</string>\r
+    <string name="touchtest_toast">Please touch screen test</string>\r
+    <string name="testing_lcd">Testing LCD</string>\r
+    <string name="fail">FAIL</string>\r
+    <string name="success">SUCCESS</string>\r
+    <string name="network">network</string>\r
+    <string name="location_sucess">Location success </string>\r
+    <string name="location_fail">Location fail</string>\r
+    <string name="gps_searching">Getting Gps information...</string>\r
+    <string name="total_memory">Total memory: </string>\r
+    <string name="avail_memory">Avail memory: </string>\r
+    <string name="testing_backlight">Testing backlight</string>\r
+    <string name="lcd_result">LCD Test Results</string>\r
+    <string name="lcd_result_tip">Please determine whether the screen display is normal</string>\r
+    <string name="ring_test">Playing music, please listen...</string>\r
+    <string name="lcdtest_toast">Click to display the brightness progress bar, double-click to exit</string>\r
+    <string name="speak_toast">please speak</string>\r
+    <string name="stop_record_toast">Stop recording</string>\r
+    <string name="playing_toast">Start playing</string>\r
+    <string name="stop_playing_toast">Stop play</string>\r
+    <string name="clear_new_wanr">Are you sure to clear the test data </string>\r
+    <string name="clear_new_yes">confirm </string>\r
+    <string name="clear_new_no">return</string>\r
+    <string name="cid">CID</string>\r
+    <string name="sim_hasRead">Identified</string>\r
+    <string name="screen_resolution">screenResolution</string>\r
+    <string name="download_mode">download_mode</string>\r
+\r
+    <string name="beginBackCameraTestCmotor">查看后拉摄像头</string>\r
+    <string name="rf_yes">是</string>\r
+    <string name="rf_no">否</string>\r
+    <string name="screen_bright">背光</string>\r
+    <string name="screen_bright_test">点击开始背光测试</string>\r
+    <string name="voice_phone_test">点击进入网络电话测试</string>\r
+    <string name="bluetootheTest">点击进入蓝牙测试</string>\r
+    <string name="radarTest">点击进入雷达测试</string>\r
+    <string name="radar">雷达测试</string>\r
+    <string name="open_radar">打开雷达</string>\r
+    <string name="close_radar">关闭雷达</string>\r
+    <!-- <string name="fm_test">FM测试</string> -->\r
+    <string name="open_fm">打开FM</string>\r
+    <string name="close_fm">关闭FM</string>\r
+    <string name="longitude">经度:</string>\r
+    <string name="latitude">纬度: </string>\r
+    <string name="brightness_test">屏幕亮度(请拖动滚动条):</string>\r
+    <string name="acc_test">acc点火测试</string>\r
+    <string name="brightLight">按键灯测试</string>\r
+    <string name="fm_isRing">提示:将收音机的频率调至101.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。</string>\r
+    <string name="open_buttonLight">点击打开按键灯</string>\r
+\r
+    <string name="beginLCDTM">点击开始LCD测试</string>\r
+\r
+    <string name="result">测试结果</string>\r
+    <!-- <string name="app_name">"测试程序"</string> -->\r
+    <string name="action_settings">设置</string>\r
+    <string name="urovo_test">"Testing tools"</string>\r
+    <string name="model_number">设备型号:</string>\r
+    <string name="manufacturer">制造商:</string>\r
+    <string name="release_number">Android版本:</string>\r
+    <string name="display_number">版本号:</string>\r
+    <string name="test_category_title">测试选项</string>\r
+    <string name="device_model_unknown">设备型号未知</string>\r
+    <string name="device_info_default">未知</string>\r
+    <string name="refresh_complete">刷新完成</string>\r
+    <string name="test_next">下一个</string>\r
+    <string name="test_last">上一个</string>\r
+    <string name="yes1">Yes</string>\r
+    <string name="no1">No</string>\r
+    <string name="ok1">Ok</string>\r
+    <string name="cancel1">Cancel</string>\r
+    <string name="openall_title">全部功能模块</string>\r
+    <string name="openall_summary">打开或关闭全部功能模块</string>\r
+    <string name="show_alltest_title">显示所有测试选项</string>\r
+    <string name="show_alltest_summary">主界面显示所有测试选项</string>\r
+    <string name="setting_title">设置</string>\r
+    <string name="moblie_test_title">整机测试</string>\r
+    <string name="Engineer_mode_title">工程模式</string>\r
+    <string name="map_copy_tools_title">地图拷贝工具</string>\r
+    <!-- device info -->\r
+    <string name="deviceinfo_title">设备信息</string>\r
+    <!-- audio -->\r
+    <string name="audio_default_music">播放默认音频文件</string>\r
+    <string name="audio_sdcard_music">扬声器(喇叭)测试</string>\r
+    <string name="audio_none_music">未找到音频文件</string>\r
+    <string name="audio_palying_tital">正在播放</string>\r
+    <string name="unknown_arter">未知</string>\r
+    <!-- flashlight -->\r
+    <string name="flashlight_title">闪光灯</string>\r
+    <string name="flashlight_none">设备无闪光灯</string>\r
+    <string name="flashlight_on">打开</string>\r
+    <string name="flashlight_off">关闭</string>\r
+    <!-- LED -->\r
+    <string name="led_tite">LED灯测试</string>\r
+    <string name="led_red_on">红色(ON)</string>\r
+    <string name="led_red_off">红色(OFF)</string>\r
+    <string name="led_red">红色</string>\r
+    <string name="led_blue">蓝色</string>\r
+    <string name="led_blue_on">蓝色(ON)</string>\r
+    <string name="led_blue_off">蓝色(OFF)</string>\r
+    <!-- tests -->\r
+    <string name="app_name_android">androidtest</string>\r
+    <string name="test_decive_info">设备</string>\r
+    <string name="test_lcd">LCD</string>\r
+    <string name="test_keypad">按键</string>\r
+    <string name="test_led">LED</string>\r
+    <string name="test_scanner">扫描头</string>\r
+    <string name="test_motor">马达</string>\r
+    <string name="test_audio">音频</string>\r
+    <string name="test_card">磁条卡</string>\r
+    <string name="test_wifi">WiFi</string>\r
+    <string name="test_bluetooth">蓝牙</string>\r
+    <string name="test_flashlight">闪光灯</string>\r
+    <string name="test_printer">打印</string>\r
+    <string name="test_gps">GPS</string>\r
+    <string name="test_record">麦克风</string>\r
+    <string name="test_3g">GSM</string>\r
+    <string name="test_rfid">非接卡</string>\r
+    <string name="test_icc">IC卡</string>\r
+    <string name="test_jj">高频</string>\r
+    <string name="test_cleanall">清除</string>\r
+    <string name="test_openall">打开全部模块</string>\r
+    <string name="test_closeall">关闭全部模块</string>\r
+    <string name="test_specifytest">选择测试</string>\r
+    <string name="test_alltest">全功能测试</string>\r
+    <string name="test_agedtest">老化测试</string>\r
+    <string name="test_noticelabel">请观察PCBA绿灯蓝灯</string>\r
+\r
+    <!-- PICC -->\r
+    <string name="picc_title">PICC测试</string>\r
+    <string name="picc_hint">请将卡放置在识别区</string>\r
+    <string name="picc_none">设备不支持FRID刷卡</string>\r
+\r
+    <!-- NFC -->\r
+    <string name="nfc_hint">请将卡放置在识别区</string>\r
+    <string name="nfc_start">Start</string>\r
+    <string name="nfc_stop">Stop</string>\r
+    <string name="nfc_context_title">NFC Test </string>\r
+    <string name="nfc_title">Test Control</string>\r
+    <string name="nfctest_info">Please place the NFC test card on the top of the NFC detective area of the device,\r
+        then press the start button to start testing, the device will output the warning tone after detected the\r
+        NFC test card. Finally, Press the stop button will stop the test.</string>\r
+    <string name="nfc_frequency">test gap time(ms):</string>\r
+    <!-- motortest -->\r
+    <string name="vibrator_title">震动</string>\r
+    <string name="app_name_driver">drivertest</string>\r
+    <string name="start">震动</string>\r
+    <string name="loginstr">开</string>\r
+    <string name="logoutstr">关</string>\r
+    <string name="wifi1">WIFI</string>\r
+    <string name="wcdma">3G</string>\r
+    <string name="bluetoothcn">蓝牙</string>\r
+    <string name="smt">扫描头</string>\r
+    <string name="motor">马达(MS)</string>\r
+    <!-- camera -->\r
+    <string name="record_start">开始录制</string>\r
+    <string name="record_complete">"录制成功,已保存"</string>\r
+    <string name="takepic_complete">拍照成功</string>\r
+    <string name="no_sdcard">未找到sd卡</string>\r
+    <!-- keypad -->\r
+    <string name="keypad_title">按键测试</string>\r
+    <string name="keypad_s1">S1</string>\r
+    <string name="keypad_s2">S2</string>\r
+    <string name="keypad_scan">Scan</string>\r
+    <string name="keypad_dpad_up">Up</string>\r
+    <string name="keypad_dpad_down">Down</string>\r
+    <string name="keypad_dpad_left">Left</string>\r
+    <string name="keypad_dpad_right">Right</string>\r
+    <string name="keypad_menu">Menu</string>\r
+    <string name="keypad_esc">Esc</string>\r
+    <string name="keypad_home">Home</string>\r
+    <string name="key_0">0</string>\r
+    <string name="key_1">1</string>\r
+    <string name="key_2">2</string>\r
+    <string name="key_3">3</string>\r
+    <string name="key_4">4</string>\r
+    <string name="key_5">5</string>\r
+    <string name="key_6">6</string>\r
+    <string name="key_7">7</string>\r
+    <string name="key_8">8</string>\r
+    <string name="key_9">9</string>\r
+    <string name="key_point">.</string>\r
+    <string name="keypad_sft">Sft</string>\r
+    <string name="keypad_alt">Ctrl</string>\r
+    <string name="keypad_aa">Aa</string>\r
+    <string name="keypad_fn">Fn</string>\r
+    <string name="keypad_ent">Ent</string>\r
+    <string name="keypad_del">"Del"</string>\r
+    <string name="keypad_space">"Space"</string>\r
+    <string name="keypad_power">Power</string>\r
+    <string name="keypad_asterisk">*</string>\r
+    <string name="keypad_pound">#</string>\r
+    <string name="keypad_volup">Volume + </string>\r
+    <string name="keypad_voldn">Volume - </string>\r
+    <string name="endaudio">完成</string>\r
+    <string name="quit">退出</string>\r
+    <!-- Bluetooth -->\r
+    <string name="bluetooth_scan">扫描</string>\r
+    <string name="bluetooth_bonded">已配对的设备</string>\r
+    <string name="bltooth_descovering">正在搜索周围可用设备...</string>\r
+    <string name="bluetooth_bonded_none">无已配对设备</string>\r
+    <string name="bluetooth_connectable">周围可用设备</string>\r
+    <string name="bluetooth_connectable_none">未检测到可用设备</string>\r
+    <string name="bluetooth_disable">蓝牙功能未打开</string>\r
+    <string name="bluetooth_title">蓝牙测试</string>\r
+    <string name="bluetooth_scan_for_devices">"扫描查找设备"</string>\r
+    <string name="btscan">手动搜索设备</string>\r
+    <string name="bluetooth_scan_complete">搜索结束</string>\r
+    <string name="bluetooth_notfound">蓝牙不可用</string>\r
+    <!-- Wifi -->\r
+    <string name="wifi_scan_complete">刷新完成</string>\r
+    <string name="wifi_state_title">Wifi测试</string>\r
+    <string name="wifi_state_connected">连接状态</string>\r
+    <string name="wifi_networks">附近网络</string>\r
+    <string name="wifi_connected_title">已连接</string>\r
+    <string name="wifi_unconnected_title">未连接</string>\r
+    <string name="wifi_scan_none">正在扫描周边wifi,请稍候...</string>\r
+    <string name="wifi_refresh">刷新</string>\r
+    <string name="wifi_state_disabling">正在关闭</string>\r
+    <string name="wifi_state_disabled">WIFI功能未打开,正在开启...</string>\r
+    <string name="wifi_state_enabling">正在打开</string>\r
+    <string name="wifi_state_enabled">WIFI功能已打开</string>\r
+    <string name="wifi_state_unknown">未知</string>\r
+    <!-- ICC -->\r
+    <string name="icc_title">IC卡测试</string>\r
+    <string name="icc_hint">请插IC卡</string>\r
+    <string name="icc_read">读卡</string>\r
+    <!-- scanner -->\r
+    <string name="scannertype_title">扫描头类型:</string>\r
+    <string name="scan_set">设置扫描头类型:</string>\r
+    <string name="scan_title">扫描结果</string>\r
+    <string name="scan_result">扫描结果</string>\r
+    <string name="set_scanner_model_complete">设置扫描头类型成功</string>\r
+    <string name="scan_about_msg">This program is the sample application provided\r
+        with project android-serialport-api. The project is free and open\r
+        source.\n\nMore information and bug report\r
+        on:\nhttp://code.google.com/p/android-serialport-api/\n\n- Cédric</string>\r
+    <string name="scan_error_configuration">Please configure your serial port first.</string>\r
+    <string name="scan_error_security">You do not have read/write permission to the serial port.</string>\r
+    <string name="scan_error_unknown">The serial port can not be opened for an unknown reason.</string>\r
+    <string name="scan_setup">setup</string>\r
+    <string name="scan_loopback">loopback</string>\r
+    <string name="scan_about">about</string>\r
+    <string name="scan_quit">quit</string>\r
+    <string name="scan_console">console</string>\r
+    <string name="scan_openscan">打开扫描头</string>\r
+    <string name="scan_closescan">关闭扫描头</string>\r
+    <string name="scan_setscan">设置默认参数</string>\r
+    <!-- 3G -->\r
+    <string name="wcdmafresh">刷新</string>\r
+    <string name="wcdmatext">3G测试</string>\r
+    <string name="options">Advance options</string>\r
+    <string name="options_save">Save</string>\r
+    <string name="options_cancle">Cancel</string>\r
+    <string name="output_dsc">After th barcode</string>\r
+    <string name="checkbox1_str">Output as keyboard</string>\r
+    <string name="checkbox2_str">Vibrate</string>\r
+    <string name="checkbox3_str">Beep</string>\r
+    <string name="checkbox4_str">Append "enter"</string>\r
+    <!-- gps -->\r
+    <string name="title_gps">GPS数据</string>\r
+    <string name="gps_disable">GPS功能尚未打开</string>\r
+    <string name="gps_longitude">经度:</string>\r
+    <string name="gps_latitude">纬度:</string>\r
+    <string name="gps_speed">速度:</string>\r
+    <string name="gps_altitude">海拔:</string>\r
+    <string name="gps_direction">方位:</string>\r
+    <string name="gps_getloc_failed">"获取地理位置信息失败"</string>\r
+    <!-- motor -->\r
+    <string name="motor_vibrator_frequency">震动时间间隔(ms):</string>\r
+    <string name="motor_vibrator_tm">震动持续时间(ms):</string>\r
+    <string name="motor_bgvibrator_start">开始</string>\r
+    <string name="motor_bgvibrator_stop">结束</string>\r
+    <string name="motor_notfound">设备不支持震动</string>\r
+    <!-- sensor -->\r
+    <string name="sensor_options">设备支持感应器</string>\r
+    <string name="sensor_gravity">重力感应器</string>\r
+    <string name="sensor_accelerometer">加速度感应器</string>\r
+    <string name="sensor_light">光线感应器</string>\r
+    <string name="sensor_data_null">未能获取感应器数据</string>\r
+    <!-- magnetic stripe card -->\r
+    <string name="mag_result_title">刷卡数据统计</string>\r
+    <string name="mag_hint">请刷磁条卡</string>\r
+    <!-- Please brush magnetic stripe card -->\r
+    <string name="count_total_title">刷卡次数:</string>\r
+    <string name="count_track1_title">磁道1成功次数:</string>\r
+    <string name="count_track2_title">磁道2成功次数:</string>\r
+    <string name="count_track3_title">磁道3成功次数:</string>\r
+    <string name="card_data">磁条卡信息</string>\r
+    <string name="card_data_wrong">错误信息</string>\r
+    <!-- print -->\r
+    <string name="print_context">请输入需打印内容</string>\r
+    <string name="printer_context_title">编辑打印内容</string>\r
+    <string name="printer_title">打印</string>\r
+    <string name="printer_temp">"打印机温度: "</string>\r
+    <!-- Printers temperature: -->\r
+    <string name="bt_print_pic">打印图片</string>\r
+    <!-- print Pic -->\r
+    <string name="bt_print_code">打印编码</string>\r
+    <!-- print Code -->\r
+    <string name="bt_print_text">打印文字</string>\r
+    <!-- print Text -->\r
+    <string name="print_hint">请输入打印内容</string>\r
+    <!-- recorder -->\r
+    <string name="none_file">未找到录音文件</string>\r
+    <string name="none_recorded_file">尚未录音</string>\r
+    <string name="recorder_menu_title">录音</string>\r
+    <string name="recorder_files">录音文件</string>\r
+\r
+    <!-- gsm -->\r
+    <string name="gsm_title">GSM信息</string>\r
+    <string name="gsm_refresh">刷新</string>\r
+    <string name="gsm_info_none">未能获取GSM信息</string>\r
+\r
+    <!-- battery -->\r
+    <string name="title_power">电源状态</string>\r
+    <string name="title_battery">电池状态</string>\r
+    <string name="battery_info_status_label" msgid="8109155295509700309">"电池状态:"</string>\r
+    <string name="battery_info_power_label" msgid="7465140230991349382">"是否已插电:"</string>\r
+    <string name="battery_info_scale_label" msgid="3649763192389778437">"当前电池电量:"</string>\r
+    <string name="battery_info_level_label" msgid="8706526709307788737">"上限电池电量:"</string>\r
+    <string name="battery_info_health_label" msgid="6416051542741886958">"电池运行状况:"</string>\r
+    <string name="battery_info_technology_label" msgid="788304533220748681">"电池技术:"</string>\r
+    <string name="battery_info_voltage_label" msgid="8971764146757637863">"电池电压:"</string>\r
+    <!-- <string name="battery_info_voltage_units" msgid="8658490792208288107">"mV"</string> -->\r
+    <string name="battery_info_temperature_label" msgid="1968383098818648037">"电池温度:"</string>\r
+    <!-- <string name="battery_info_temperature_units" msgid="9098950587249987550">"° C"</string> -->\r
+    <string name="battery_info_uptime" msgid="5548545143573527992">"启动后的时间:"</string>\r
+    <string name="battery_info_awake_battery" msgid="2557725975486185849">"使用电池电量的未休眠时间:"</string>\r
+    <string name="battery_info_awake_plugged" msgid="176716874713478188">"充电时的唤醒时间:"</string>\r
+    <string name="battery_info_screen_on" msgid="376277447175613889">"屏幕开启时间:"</string>\r
+    <!--\r
+    <string name="battery_info_status_unknown" msgid="196130600938058547">"未知"</string>\r
+    <string name="battery_info_status_charging" msgid="1705179948350365604">"正在充电"</string>\r
+    <string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(交流电)"</string>\r
+    <string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>\r
+    <string name="battery_info_status_discharging" msgid="6222697503392774475">"正在耗电"</string>\r
+    <string name="battery_info_status_not_charging" msgid="2820070506621483576">"未在充电"</string>\r
+    <string name="battery_info_status_full" msgid="2824614753861462808">"电量充足"</string>\r
+    <string name="battery_info_power_unplugged" msgid="5987246575519551081">"未插电"</string>\r
+    <string name="battery_info_power_ac" msgid="6808516193001604634">"交流电"</string>\r
+    <string name="battery_info_power_usb" msgid="8012931702516331797">"USB"</string>\r
+    <string name="battery_info_power_ac_usb" msgid="6777734146838328688">"交流电 + USB"</string>\r
+    <string name="battery_info_power_unknown" msgid="7344115502868899881">"未知"</string>\r
+    <string name="battery_info_health_unknown" msgid="5664295556921944255">"未知"</string>\r
+    <string name="battery_info_health_good" msgid="8070356565806711806">"正常"</string>\r
+    <string name="battery_info_health_overheat" msgid="8442959549291368806">"过热"</string>\r
+    <string name="battery_info_health_dead" msgid="1725917445762829059">"没电"</string>\r
+    <string name="battery_info_health_over_voltage" msgid="2420269351664490121">"过电压"</string>\r
+    <string name="battery_info_health_unspecified_failure" msgid="6347021103185471590">"未知错误"</string>\r
+    <string name="battery_info_health_cold" msgid="3835692786176707318">"电量低"</string>\r
+\r
+\r
+\r
+\r
+    -->\r
+    <string name="battery_technology_unknwn">"未知"</string>\r
+    <!-- <string name="light">"亮屏了"</string> -->\r
+    <string name="black">"灭屏了"</string>\r
+    <string name="slide"> "请滑动屏幕测试"</string>\r
+    <string name="music_is_run"> "音乐正在播放"</string>\r
+    <string name="sd_status"> "SD状态:已检测到SD卡"</string>\r
+    <string name="sd_tatal"> "总容量:"</string>\r
+    <string name="sd_left">  "剩余容量:" </string>\r
+    <string name="sd_used">  "已用容量:" </string>\r
+    <string name="sd_fail">  "SD状态:未检测到SD卡!" </string>\r
+    <string name="set_tag">  "测试完成,将写入标志位" </string>\r
+    <string name="sim_status">  "SIM状态:SIM 就绪" </string>\r
+    <string name="sim_fail">  "SIM状态:无SIM或SIM卡损坏" </string>\r
+    <string name="china_yidong"> "中国移动"</string>\r
+    <string name="china_lintong"> "中国联通"</string>\r
+    <string name="china_dianxin">  "中国电信" </string>\r
+    <string name="sim_fail1">  "SIM卡过期" </string>\r
+    <string name="gongcheng">  "工厂测试" </string>\r
+    <string name="moshi">  "工程模式" </string>\r
+    <string name="shintool">  "地图拷贝工具" </string>\r
+    <string name="lanya">  "蓝牙测试" </string>\r
+    <string name="lanya_open">  " 蓝牙设备已开启" </string>\r
+    <string name="car_staut">  " 摄像头\n测试结果" </string>\r
+    <string name="start_test">  "开始测试" </string>\r
+    <string name="fm_test">  "FM发射器测试" </string>\r
+    <string name="fm_status">  " FM状态:" </string>\r
+    <string name="fm_tip">  "      提示:将收音机频率调至108.0MHZ,测试收音机是否收到音乐,收到则成功,反之则失败。" </string>\r
+    <string name="light_test">  "   灭/亮屏测试" </string>\r
+    <string name="light_tip">  "    提示:请按电源键,测试灭/亮屏和电源键,是否正常" </string>\r
+    <string name="light_status">  " 状态:" </string>\r
+    <string name="sd_test">  "SD卡测试" </string>\r
+    <string name="sim_test">  " SIM卡测试" </string>\r
+    <string name="sim_type">  "网络类型" </string>\r
+    <string name="sim_strenth">  "信号强度:" </string>\r
+    <string name="test1">  "PCBA自动测试" </string>\r
+    <string name="test2">  "整机自动测试" </string>\r
+    <string name="sd_title">"SD卡" </string>\r
+    <string name="fm_title">"FM发射" </string>\r
+    <string name="light_title">"灭/亮屏" </string>\r
+    <string name="bt_r">"蓝牙," </string>\r
+    <string name="touch_r">"触摸屏," </string>\r
+    <string name="sim_r">"sim卡," </string>\r
+    <string name="sd_r">"SD卡," </string>\r
+    <string name="mic_r">"双MIC," </string>\r
+    <string name="speak_r">"扬声器," </string>\r
+    <string name="camera_r">"摄像头," </string>\r
+    <string name="fm_r">"FM发射," </string>\r
+    <string name="light_r">"灭/亮屏," </string>\r
+    <string name="barry_r">"电池," </string>\r
+    <string name="pass_r">"已通过的项目:" </string>\r
+    <string name="fail_r">"未通过的项目:" </string>\r
+    <string name="tag_r">"本机NV标志位(1代表通过,0代表未通过):" </string>\r
+    <string name="diglog_r">"请按下图测试,点击任意处,取消该窗口,开始测试" </string>\r
+    <string name="test_r">"测试报告" </string>\r
+    <string name="close_r">"关闭" </string>\r
+    <string name="none">"没有测试记录,完成一次PCBA测试,添加记录" </string>\r
+    <string name="none1">"没有测试记录,完成一次整机自动测试,添加记录" </string>\r
+    <string name="none2">"没有校准记录" </string>\r
+    <string name="jiaju">"PCBA自动测试报告" </string>\r
+    <string name="auto">"整机自动测试报告" </string>\r
+    <string name="jiaju_time">"最近测试时间:" </string>\r
+    <string name="tags">"标志位(按测试顺序):" </string>\r
+    <string name="test_over">"测试完成,将写入标志位" </string>\r
+    <string name="picturing">"正在拍照" </string>\r
+    <string name="recording">"正在录像,请晃动机器测试" </string>\r
+    <string name="pic_over">"拍照完成" </string>\r
+    <string name="write_tag_over">" 已经写入标志位" </string>\r
+    <string name="record1">"录像" </string>\r
+    <string name="photo">"停止" </string>\r
+    <string name="deviceInfo">"版本信息" </string>\r
+    <string name="gsensor">"Gsensor测试" </string>\r
+    <string name="sensor">请旋转手机或屏幕</string>\r
+    <string name="read_data">读取数据</string>\r
+    <string name="sensor_calibration_do_20">进行校准(误差20%)</string>\r
+    <string name="sensor_calibration_do_40">进行校准(误差40%)</string>\r
+    <string name="sensor_calibration_clear">清除校准数据</string>\r
+    <string name="sensor_calibration_note">"   注意:在校准过程中,设备必须处于水平放置状态。"</string>\r
+    <string name="sensor_calibration_intro">"   操作:点击“水平校准”按钮,系统会自动校准,并判断是否成功。点击“清除校准数据”按钮后,校准数据清零,需重新进行水平校准。"</string>\r
+    <string name="sensor_calibration_current_data_hint">加速度传感器当前数据: </string>\r
+    <string name="sensor_calibration_sensor_data_hint">加速度传感器校准数据: </string>\r
+    <string name="sensor_calibration_gsensor">加速度传感器校准</string>\r
+    <string name="record_agin">重新录音</string>\r
+    <string name="bt_tip">请在附近打开蓝牙,观察是否搜索到该蓝牙</string>\r
+    <string name="rf_result">"RF校准标志位:  "</string>\r
+    <string name="rf_gsensor">Rf,Gsensor校准报告</string>\r
+    <string name="sensor_accelerometer1">Gsensor测试</string>\r
+    <string name="sensor_accelerometer2">"Gsensor,"</string>\r
+    <string name="sensor_tip">"       提示:请将机器屏幕分别朝前后左右4个方向,观察箭头变化,只有4个方向都测试通过,才会显示成功。"</string>\r
+    <string name="north">向北</string>\r
+    <string name="sourth">向南</string>\r
+    <string name="weast">向西</string>\r
+    <string name="east">向东</string>\r
+    <string name="gsensor_data">Gsensor参数:</string>\r
+    <string name="auto_tip">该台机器已经做过整机自动测试</string>\r
+    <string name="user_tip">该台机器已经做过PCBA自动测试</string>\r
+    <string name="mic_tip"> "   提示:请选择测试的Mic,然后对着选择的Mic吹气,右图指针转动则判断成功,否则失败。"</string>\r
+    <string name="version_tip"> "显示版本及测试信息"</string>\r
+    <string name="testresult_tip"> "测试结果:"</string>\r
+    <string name="pass_test"> "通过"</string>\r
+    <string name="fail_test"> "未通过"</string>\r
+    <string name="gps_test"> "GPS测试"</string>\r
+    <string name="gsensor_complete"> "Gensor校准"</string>\r
+    <string name="gsensor_20"> "水平校准"</string>\r
+    <string name="gsensor_zhengji"> "整机自动测试: "</string>\r
+    <string name="gsensor_pcba"> "PCBA自动测试: "</string>\r
+    <string name="lamp"> "三色灯 "</string>\r
+    <string name="lamp_tile"> "三色灯测试 "</string>\r
+    <string name="lamp_tip"> "      请观察指示灯颜色变化,如果看到红绿蓝三种颜色依次变化,则判断成功;反之,只看到一种、两种或灯不亮则失败。 "</string>\r
+    <string name="mianmic"> "主Mic测试 "</string>\r
+    <string name="othermic"> "副Mic测试 "</string>\r
+    <string name="button_new"> "按键"</string>\r
+    <string name="leida_new"> "雷达"</string>\r
+    <string name="sigle_new"> "单项测试报告"</string>\r
+    <string name="rf_new"> "Rf校准:"</string>\r
+    <string name="imei_new"> "IMEI号:"</string>\r
+    <string name="lcd_test_new">  "显示屏测试结果" </string>\r
+    <string name="tf_test_new">  "双TF卡" </string>\r
+    <string name="tf_Detect">  "已检测到" </string>\r
+    <string name="tf_UnDetect">  "未检测到" </string>\r
+    <string name="test_over_new">  "测试结束!" </string>\r
+    <string name="lamp_new">  "按键灯" </string>\r
+    <string name="key_result_tip">*提示:点击按键灯测试,观察电源键灯光是否亮起</string>\r
+    <string name="tip1">提示:该界面可进行单项测试</string>\r
+    <string name="mac_new">MAC地址:</string>\r
+    <string name="bt_tip_new">操作步骤:\n1.准备一台可拨打电话的手机和一台固定电话\n2.使用手机与后视镜蓝牙连接,然后向固话拨打电话,\n3.接通后,两边能正常通话,则通过.</string>\r
+\r
+    <string name="open_dialer">正在打开通话界面,请稍后。。。</string>\r
+    <string name="test_camera">Camera</string>\r
+    <string name="test_sensor">Gravity sensor</string>\r
+    <string name="test_battery">Battery</string>\r
+    <string name="key_ai">AI键</string>\r
+    <string name="test_keypad1">按键1</string>\r
+    <string name="test_keypad2">按键2</string>\r
+    <string name="ultraviolet">紫外线</string>\r
+    <string name="currentTime">currentTime</string>\r
+    <string name="workTime">workTime</string>\r
+    <string name="wifi_mac_addaress">wifi mac addaress</string>\r
+    <string name="bluethooth_mac_addaress">bluethooth mac addaress</string>\r
+    <string name="barcode">barcode</string>\r
+    <string name="flag_position">标志位检查</string>\r
+    <string name="dsp">DSP</string>\r
+    <string name="change_camera">change</string>\r
+    <string name="heartrate">HeartRate</string>\r
+    <string name="hall">hall</string>\r
+</resources>\r
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644 (file)
index 0000000..85aa27f
--- /dev/null
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<resources xmlns:android="http://schemas.android.com/apk/res/android">\r
+    <style name="detail_title">\r
+        <item name="android:textAppearance">?android:textAppearanceMedium</item>\r
+        <item name="android:textColor">@drawable/black</item>\r
+        <item name="android:gravity">center</item>\r
+        <item name="android:layout_width">fill_parent</item>\r
+        <item name="android:layout_height">wrap_content</item>\r
+    </style>\r
+    <style name="detail_tab">\r
+        <item name="android:orientation">vertical</item>\r
+        <item name="android:background">@drawable/half_corner_bg</item>\r
+        <item name="android:layout_width">fill_parent</item>\r
+        <item name="android:layout_height">wrap_content</item>\r
+        <item name="android:layout_margin">2.0dip</item>\r
+    </style>\r
+    <style name="detail_line">\r
+        <item name="android:background">@color/gray</item>\r
+        <item name="android:layout_width">fill_parent</item>\r
+        <item name="android:layout_height">1.0dip</item>\r
+        <item name="android:layout_marginLeft">5.0dip</item>\r
+        <item name="android:layout_marginRight">5.0dip</item>\r
+    </style>\r
+    <style name="detail_tip">\r
+        <item name="android:textColor">@color/black</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:layout_height">wrap_content</item>\r
+        <item name="android:layout_margin">5.0dip</item>\r
+    </style>\r
+    <style name="colon">\r
+        <item name="android:textColor">@color/black</item>\r
+        <item name="android:gravity">center</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:layout_height">fill_parent</item>\r
+        <item name="android:text">@string/colon</item>\r
+    </style>\r
+    <style name="value">\r
+        <item name="android:textColor">@color/black</item>\r
+        <item name="android:gravity">center</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:layout_height">fill_parent</item>\r
+    </style>\r
+    \r
+    <style name="table_item_style">\r
+        <item name="android:layout_width">match_parent</item>\r
+        <item name="android:layout_height">70dp</item>\r
+        <item name="android:layout_weight">1.0</item>\r
+        <item name="android:background">@drawable/button_common_white_bg</item>\r
+        <item name="android:clickable">true</item>\r
+        <item name="android:gravity">center</item>\r
+    </style>\r
+\r
+    <style name="table_item_small_style">\r
+        <item name="android:layout_width">match_parent</item>\r
+        <item name="android:layout_height">80dp</item>\r
+        <item name="android:layout_weight">1.0</item>\r
+        <item name="android:background">@drawable/button_common_white_bg</item>\r
+        <item name="android:clickable">true</item>\r
+        <item name="android:gravity">center</item>\r
+    </style>\r
+\r
+    <style name="layout_default_style">\r
+        <item name="android:layout_marginLeft">10dp</item>\r
+        <item name="android:layout_marginRight">10dp</item>\r
+        <item name="android:layout_marginTop">10dp</item>\r
+        <item name="android:layout_marginBottom">10dp</item>\r
+    </style>\r
+\r
+    <style name="layout_crowd_style">\r
+        <item name="android:layout_marginLeft">10dp</item>\r
+        <item name="android:layout_marginRight">10dp</item>\r
+        <item name="android:layout_marginTop">5dp</item>\r
+        <item name="android:layout_marginBottom">5dp</item>\r
+    </style>\r
+\r
+    <style name="layout_button_style">\r
+        <item name="android:layout_marginLeft">0dp</item>\r
+        <item name="android:layout_marginRight">0dp</item>\r
+        <item name="android:layout_marginTop">5dp</item>\r
+        <item name="android:layout_marginBottom">5dp</item>\r
+    </style>\r
+\r
+    <style name="category_title_style">\r
+        <item name="android:layout_height">wrap_content</item>\r
+        <item name="android:layout_width">match_parent</item>\r
+        <item name="android:background">@drawable/setting_title_bg</item>\r
+        <item name="android:gravity">center_vertical</item>\r
+        <item name="android:textStyle">bold</item>\r
+        <item name="android:paddingLeft">00dip</item>\r
+    </style>\r
+\r
+    <style name="title_text_style">\r
+        <item name="android:textSize">14sp</item>\r
+        <item name="android:textColor">@color/color_title</item>\r
+    </style>\r
+\r
+    <style name="title_text_medium_style">\r
+        <item name="android:textSize">16sp</item>\r
+        <item name="android:textColor">@color/color_title</item>\r
+    </style>\r
+    \r
+     <style name="title_text_large_style">\r
+        <item name="android:textSize">18sp</item>\r
+        <item name="android:textColor">@color/color_title</item>\r
+    </style>\r
+\r
+    <style name="content_text_style">\r
+        <item name="android:textSize">12.0sp</item>\r
+        <item name="android:textColor">@color/color_summery</item>\r
+    </style>\r
+\r
+    <style name="content_text_medium_style">\r
+        <item name="android:textSize">14.0sp</item>\r
+        <item name="android:textColor">@color/color_summery</item>\r
+    </style>\r
+\r
+    <style name="TextAppearance" parent="android:TextAppearance"></style>\r
+\r
+    <style name="info_label">\r
+        <item name="android:layout_height">wrap_content</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>\r
+        <item name="android:textStyle">bold</item>\r
+        <item name="android:paddingRight">5dip</item>\r
+    </style>\r
+\r
+    <style name="info_value">\r
+        <item name="android:layout_height">wrap_content</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>\r
+        <item name="android:textStyle">normal</item>\r
+    </style>\r
+\r
+    <style name="test_item_style">\r
+        <item name="android:layout_height">match_parent</item>\r
+        <item name="android:layout_width">wrap_content</item>\r
+        <item name="android:gravity">center</item>\r
+        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>\r
+        <item name="android:textSize">18sp</item>\r
+        <item name="android:textStyle">normal</item>\r
+    </style>\r
+\r
+    <style name="help_info_text_style">\r
+        <item name="android:textSize">16sp</item>\r
+        <item name="android:textColor">@color/color_summery</item>\r
+    </style>\r
+\r
+    <style name="button_white_text">\r
+        <item name="android:textSize">17.0sp</item>\r
+        <item name="android:textColor">@color/button_common_white_text</item>\r
+    </style>\r
+    \r
+    <style name="button_green_text">\r
+        <item name="android:textSize">17.0sp</item>\r
+        <item name="android:textColor">@color/button_common_green_text</item>\r
+    </style>\r
+    \r
+      <style name="DialogStyle" parent="android:Theme.Dialog">\r
+        <item name="android:windowBackground">@android:color/transparent</item>\r
+        <item name="android:windowFrame">@null</item>\r
+        <item name="android:windowNoTitle">true</item>\r
+        <item name="android:windowIsFloating">true</item>\r
+        <item name="android:windowIsTranslucent">true</item>\r
+        <item name="android:windowContentOverlay">@null</item>\r
+        <!-- 对话框是否有遮盖 -->\r
+        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>\r
+        <item name="android:backgroundDimEnabled">true</item>\r
+    </style>\r
+    \r
+      <style name="AppTheme" parent="AppBaseTheme">\r
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->\r
+        <item name="android:windowNoTitle">true</item>\r
+        <item name="android:windowTitleSize">0.0dip</item>\r
+        <item name="android:windowFullscreen">true</item>\r
+    </style>\r
+    \r
+       <style name="AppBaseTheme" parent="android:Theme.Light">\r
+        <!--\r
+            Theme customizations available in newer API levels can go in\r
+            res/values-vXX/styles.xml, while customizations related to\r
+            backward-compatibility can go here.\r
+        -->\r
+    </style>\r
+    \r
+</resources>\r
diff --git a/build.gradle b/build.gradle
new file mode 100644 (file)
index 0000000..638c3d9
--- /dev/null
@@ -0,0 +1,17 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.\r
+buildscript {\r
+    repositories {\r
+        jcenter()\r
+        google()\r
+    }\r
+    dependencies {\r
+        classpath 'com.android.tools.build:gradle:3.1.3'\r
+    }\r
+}\r
+\r
+allprojects {\r
+    repositories {\r
+        jcenter()\r
+        google()\r
+    }\r
+}\r
diff --git a/factorymode.iml b/factorymode.iml
new file mode 100644 (file)
index 0000000..6804458
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<module external.linked.project.id="factorymode" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">\r
+  <component name="FacetManager">\r
+    <facet type="java-gradle" name="Java-Gradle">\r
+      <configuration>\r
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />\r
+        <option name="BUILDABLE" value="false" />\r
+      </configuration>\r
+    </facet>\r
+  </component>\r
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="true">\r
+    <exclude-output />\r
+    <content url="file://$MODULE_DIR$">\r
+      <excludeFolder url="file://$MODULE_DIR$/.gradle" />\r
+      <excludeFolder url="file://$MODULE_DIR$/build" />\r
+    </content>\r
+    <orderEntry type="jdk" jdkName="JDK" jdkType="JavaSDK" />\r
+    <orderEntry type="sourceFolder" forTests="false" />\r
+  </component>\r
+</module>
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644 (file)
index 0000000..7a3265e
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644 (file)
index 0000000..efc27cb
--- /dev/null
@@ -0,0 +1,6 @@
+#Sat Jan 13 09:12:34 PST 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100644 (file)
index 0000000..cccdd3d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644 (file)
index 0000000..e95643d
--- /dev/null
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off\r
+@rem ##########################################################################\r
+@rem\r
+@rem  Gradle startup script for Windows\r
+@rem\r
+@rem ##########################################################################\r
+\r
+@rem Set local scope for the variables with windows NT shell\r
+if "%OS%"=="Windows_NT" setlocal\r
+\r
+set DIRNAME=%~dp0\r
+if "%DIRNAME%" == "" set DIRNAME=.\r
+set APP_BASE_NAME=%~n0\r
+set APP_HOME=%DIRNAME%\r
+\r
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r
+set DEFAULT_JVM_OPTS=\r
+\r
+@rem Find java.exe\r
+if defined JAVA_HOME goto findJavaFromJavaHome\r
+\r
+set JAVA_EXE=java.exe\r
+%JAVA_EXE% -version >NUL 2>&1\r
+if "%ERRORLEVEL%" == "0" goto init\r
+\r
+echo.\r
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r
+echo.\r
+echo Please set the JAVA_HOME variable in your environment to match the\r
+echo location of your Java installation.\r
+\r
+goto fail\r
+\r
+:findJavaFromJavaHome\r
+set JAVA_HOME=%JAVA_HOME:"=%\r
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe\r
+\r
+if exist "%JAVA_EXE%" goto init\r
+\r
+echo.\r
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r
+echo.\r
+echo Please set the JAVA_HOME variable in your environment to match the\r
+echo location of your Java installation.\r
+\r
+goto fail\r
+\r
+:init\r
+@rem Get command-line arguments, handling Windows variants\r
+\r
+if not "%OS%" == "Windows_NT" goto win9xME_args\r
+\r
+:win9xME_args\r
+@rem Slurp the command line arguments.\r
+set CMD_LINE_ARGS=\r
+set _SKIP=2\r
+\r
+:win9xME_args_slurp\r
+if "x%~1" == "x" goto execute\r
+\r
+set CMD_LINE_ARGS=%*\r
+\r
+:execute\r
+@rem Setup the command line\r
+\r
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar\r
+\r
+@rem Execute Gradle\r
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r
+\r
+:end\r
+@rem End local scope for the variables with windows NT shell\r
+if "%ERRORLEVEL%"=="0" goto mainEnd\r
+\r
+:fail\r
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r
+rem the _cmd.exe /c_ return code!\r
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1\r
+exit /b 1\r
+\r
+:mainEnd\r
+if "%OS%"=="Windows_NT" endlocal\r
+\r
+:omega\r
diff --git a/settings.gradle b/settings.gradle
new file mode 100644 (file)
index 0000000..f31f3fa
--- /dev/null
@@ -0,0 +1 @@
+include ':app', ':watchlibrary'\r
diff --git a/watchlibrary/watchlibrary.iml b/watchlibrary/watchlibrary.iml
new file mode 100644 (file)
index 0000000..cfdf090
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<module external.linked.project.id=":watchlibrary" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">\r
+  <component name="FacetManager">\r
+    <facet type="java-gradle" name="Java-Gradle">\r
+      <configuration>\r
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />\r
+        <option name="BUILDABLE" value="false" />\r
+      </configuration>\r
+    </facet>\r
+  </component>\r
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="true">\r
+    <exclude-output />\r
+    <content url="file://$MODULE_DIR$">\r
+      <excludeFolder url="file://$MODULE_DIR$/.gradle" />\r
+    </content>\r
+    <orderEntry type="jdk" jdkName="JDK" jdkType="JavaSDK" />\r
+    <orderEntry type="sourceFolder" forTests="false" />\r
+  </component>\r
+</module>
\ No newline at end of file