From: snickersun Date: Sat, 16 Nov 2019 02:53:19 +0000 (+0800) Subject: 在研强的版本上添加pcba测试功能项, X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.js?a=commitdiff_plain;h=c63965b3f4041a5f6d33c208a51aeab343f9eb7b;p=factoryMode.git 在研强的版本上添加pcba测试功能项, 并增加GPS搜星值的显示,方便调试使用。 --- c63965b3f4041a5f6d33c208a51aeab343f9eb7b diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8e6426c --- /dev/null +++ b/.gitignore @@ -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 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 index 0000000..d371f2e --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,57 @@ +apply plugin: 'com.android.application' + +android { + signingConfigs { + key { + storeFile file("AndroidSystem.jks") + storePassword "android123456" + keyAlias "android" + keyPassword "android123456" + } + } + lintOptions { + checkReleaseBuilds false + abortOnError false + } + compileSdkVersion 20 + defaultConfig { + applicationId "mobile.miki" + minSdkVersion 18 + targetSdkVersion 20 + versionCode 1 + versionName "20191116-0900" + } + buildTypes { + release { + minifyEnabled false + signingConfig signingConfigs.key +// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + debug { + signingConfig signingConfigs.key + } + } + //打包后应用名称 + applicationVariants.all { variant -> + variant.outputs.all { output -> + outputFileName = "FactoryMode.apk" + } + } + buildToolsVersion '27.0.3' + + sourceSets { + main { + jni.srcDirs = [] + } + } +} + +dependencies { + implementation 'com.android.support:support-v4:20.0.0' + compileOnly files('libs/watch_framework.jar') + implementation 'com.squareup.okhttp3:okhttp:3.4.1' + implementation 'io.reactivex:rxandroid:1.2.1' + implementation 'com.liulishuo.filedownloader:library:1.6.3' + compileOnly files('libs/IAtChannel_classes.jar') + implementation files('libs/LineWrapContainer.aar') +} diff --git a/app/libs/IAtChannel_classes.jar b/app/libs/IAtChannel_classes.jar new file mode 100644 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 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 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 index 0000000..8423c0e --- /dev/null +++ b/app/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/release/FactoryMode.apk b/app/release/FactoryMode.apk new file mode 100644 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 index 0000000..afaee1e --- /dev/null +++ b/app/release/output.json @@ -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 index 0000000..2d7258e --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..1f17251 --- /dev/null +++ b/app/src/main/java/mobile/miki/APNBean.java @@ -0,0 +1,136 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + + +public class APNBean { + private String apn; + private String authenticationtype; + private String authtype; + private String carrier; + private String mcc; + private String mmsc; + private String mmsport; + private String mmsproxy; + private String mnc; + private String password; + private String port; + private String server; + private String type; + private String user; + + public String getAuthenticationtype() { + return this.authenticationtype; + } + + public void setAuthenticationtype(String authenticationtype) { + this.authenticationtype = authenticationtype; + } + + public String getAuthtype() { + return this.authtype; + } + + public void setAuthtype(String authtype) { + this.authtype = authtype; + } + + public String getCarrier() { + return this.carrier; + } + + public void setCarrier(String carrier) { + this.carrier = carrier; + } + + public String getMcc() { + return this.mcc; + } + + public void setMcc(String mcc) { + this.mcc = mcc; + } + + public String getMnc() { + return this.mnc; + } + + public void setMnc(String mnc) { + this.mnc = mnc; + } + + public String getApn() { + return this.apn; + } + + public void setApn(String apn) { + this.apn = apn; + } + + public String getMmsc() { + return this.mmsc; + } + + public void setMmsc(String mmsc) { + this.mmsc = mmsc; + } + + public String getMmsproxy() { + return this.mmsproxy; + } + + public void setMmsproxy(String mmsproxy) { + this.mmsproxy = mmsproxy; + } + + public String getMmsport() { + return this.mmsport; + } + + public void setMmsport(String mmsport) { + this.mmsport = mmsport; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return this.password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPort() { + return this.port; + } + + public void setPort(String port) { + this.port = port; + } + + public String getServer() { + return this.server; + } + + public void setServer(String server) { + this.server = server; + } +} diff --git a/app/src/main/java/mobile/miki/BaseActivity.java b/app/src/main/java/mobile/miki/BaseActivity.java new file mode 100644 index 0000000..fc3b1a4 --- /dev/null +++ b/app/src/main/java/mobile/miki/BaseActivity.java @@ -0,0 +1,105 @@ +package mobile.miki; + +import android.app.Activity; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.util.Log; +import android.view.View; + +public class BaseActivity extends Activity { + private static final String TAG = "BaseActivity"; + private WakeLock wakeLock = null; + private PowerManager powerManager = null; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); + wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "FactoryMode"); + IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + registerReceiver(homePressReceiver, homeFilter); + if(wakeLock != null) { + //是否需计算锁的数量 + wakeLock.setReferenceCounted(false); + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); + handler.postDelayed(runnable, 1000 * 60 * 30); //30分钟不灭屏 + + } + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + if(handler != null) { + handler.removeCallbacks(runnable); + } + + if (homePressReceiver != null) { + unregisterReceiver(homePressReceiver); + } + } + + Handler handler=new Handler(); + Runnable runnable=new Runnable() { + @Override + public void run() { + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + + } + }; + + + //HOME键监听 + private BroadcastReceiver homePressReceiver = new BroadcastReceiver() { + final String SYSTEM_DIALOG_REASON_KEY = "reason"; + final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; + @Override + public void onReceive(Context context, Intent intent) { + // TODO Auto-generated method stub + String action = intent.getAction(); + if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){ + String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); + if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){ + if(handler != null) { + handler.removeCallbacks(runnable); + } + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + } + } + } + }; + + public void testSuccess(View view) { + Log.i("BaseActivity", "testSuccess"); + sendBroadcast(new Intent("mobile.miki.testsuccess")); + } + + public void testFail(View view) { + Log.i("BaseActivity", "testFail"); + sendBroadcast(new Intent("mobile.miki.testfail")); + } + + + +} diff --git a/app/src/main/java/mobile/miki/BatteryTestActivity.java b/app/src/main/java/mobile/miki/BatteryTestActivity.java new file mode 100644 index 0000000..d554bd2 --- /dev/null +++ b/app/src/main/java/mobile/miki/BatteryTestActivity.java @@ -0,0 +1,217 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; +import android.widget.TextView; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; + +public class BatteryTestActivity extends BaseActivity implements + OnClickListener { + private static final String PLUGGED = "plugged"; + private static final String LEVEL = "level"; + private static final String SCALE = "scale"; + private static final String VOLTAGE = "voltage"; + private static final String TEMPERATURE = "temperature"; + private static final String STATUS = "status"; + private static final String HEALTH = "health"; + private boolean mReceiverTag = false; //广播接受者标识 + TextView bt_status; + ImageView bt_bg; + TextView bt_vol; + TextView bt_temp; + TextView bt_level; + TextView battery_health; + + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.batterytest); + + bt_bg = (ImageView) findViewById(R.id.imageView); + bt_status = (TextView) findViewById(R.id.bt_usb_ac); + + bt_vol = (TextView) findViewById(R.id.battery_voltage_cus); + + bt_temp = (TextView) findViewById(R.id.temperature_cus); + + bt_level = (TextView) findViewById(R.id.bt_level); + + battery_health = (TextView) findViewById(R.id.battery_health); + + registerReceiver(); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + + Intent intent = getIntent(); + running = false; + pcbatest = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } + } + + //代码中动态注册广播 + private void registerReceiver() { + if (!mReceiverTag){ //在注册广播接受者的时候 判断是否已被注册,避免重复多次注册广播 + mReceiverTag = true; //标识值 赋值为 true 表示广播已被注册 + mIntentFilter = new IntentFilter(); + mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + registerReceiver(mIntentReceiver, mIntentFilter); + } + } + + //注销广播 + private void unregisterReceiver() { + if (mReceiverTag) { //判断广播是否注册 + mReceiverTag = false; //Tag值 赋值为false 表示该广播已被注销 + this.unregisterReceiver(mIntentReceiver); //注销广播 + } + + } + + private final String tenthsToFixedString(int x) { + int tens = x / 10; + // use Math.abs to avoid "-9.-9" about -99 + return Integer.toString(tens) + "." + Math.abs(x - 10 * tens); + } + + private IntentFilter mIntentFilter; + private IntentFilter mIntentFilterSDCard; + + private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context arg0, Intent arg1) { + String action = arg1.getAction(); + if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { + int plugType = arg1.getIntExtra(PLUGGED, 0); + + bt_level.setText("" + arg1.getIntExtra(LEVEL, 0)); + bt_vol.setText("" + arg1.getIntExtra(VOLTAGE, 0) + " " + + getString(R.string.battery_info_voltage_units)); + bt_temp.setText("" + + tenthsToFixedString(arg1.getIntExtra(TEMPERATURE, 0)) + + getString(R.string.battery_info_temperature_units)); + + int status = arg1.getIntExtra(STATUS, + BatteryManager.BATTERY_STATUS_UNKNOWN); + String statusString = null; + if (status == BatteryManager.BATTERY_STATUS_CHARGING) { + statusString = getString(R.string.battery_info_status_charging); + if (plugType > 0) { + statusString = statusString + + " " + + getString((plugType == BatteryManager.BATTERY_PLUGGED_AC) ? R.string.battery_info_status_charging_ac + : R.string.battery_info_status_charging_usb); + } + bt_bg.setBackgroundResource(R.drawable.charging_bt); + } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { + statusString = getString(R.string.battery_info_status_discharging); + bt_bg.setBackgroundResource(R.drawable.uncharging_bt); + } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { + statusString = getString(R.string.battery_info_status_not_charging); + bt_bg.setBackgroundResource(R.drawable.uncharging_bt); + } else if (status == BatteryManager.BATTERY_STATUS_FULL) { + statusString = getString(R.string.battery_info_status_full); + } else { + statusString = getString(R.string.battery_info_status_unknown); + bt_bg.setBackgroundResource(R.drawable.uncharging_bt); + } + bt_status.setText(statusString); + + int health = arg1.getIntExtra(HEALTH, + BatteryManager.BATTERY_HEALTH_UNKNOWN); + String healthString; + if (health == BatteryManager.BATTERY_HEALTH_GOOD) { + healthString = getString(R.string.battery_info_health_good); + } else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) { + healthString = getString(R.string.battery_info_health_overheat); + } else if (health == BatteryManager.BATTERY_HEALTH_DEAD) { + healthString = getString(R.string.battery_info_health_dead); + } else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) { + healthString = getString(R.string.battery_info_health_over_voltage); + } else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) { + healthString = getString(R.string.battery_info_health_unspecified_failure); + } else { + healthString = getString(R.string.battery_info_health_unknown); + } + battery_health.setText(healthString); + } + } + }; + + @Override + public void onPause() { + super.onPause(); + } + + @Override + protected void onDestroy() { + unregisterReceiver(); + super.onDestroy(); + } + + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, SystemMemory.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest",pcbatest); + Intent intent1 = new Intent(this, TestMainActivity.class); + + switch (arg0.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("watchbattery", "true").commit(); + + finish(); + + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("watchbattery", "false").commit(); + finish(); + + break; + } + } +} diff --git a/app/src/main/java/mobile/miki/BlooToothActivity.java b/app/src/main/java/mobile/miki/BlooToothActivity.java new file mode 100644 index 0000000..8d68a20 --- /dev/null +++ b/app/src/main/java/mobile/miki/BlooToothActivity.java @@ -0,0 +1,265 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.app.ProgressDialog; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.HashMap; + +import mobile.miki.adapter.ListViewAdapter; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; +import mobile.miki.util.StringUtil; + +public class BlooToothActivity extends BaseActivity implements OnClickListener { + private static final int REQUEST_ENABLE_BT = 2; + private ProgressDialog dialogBar; + private ListView listView; + private ArrayList> listViewData; + private BluetoothAdapter mBtAdapter; + private final BroadcastReceiver mReceiver; + private HashMap map; + private boolean flag = true; + + private ButtonViewTwo buttonView; + boolean running; + + public BlooToothActivity() { + this.listViewData = new ArrayList(); + map = null; + mReceiver = new BroadcastReceiver() { + + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if("android.bluetooth.device.action.FOUND".equals(action)) { + BluetoothDevice device = (BluetoothDevice)intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE"); + if(device.getBondState() != 12) { + //ProgressDialog dialogBar = this$0new HashMap(); + BlooToothActivity.this.map = new HashMap(); + BlooToothActivity.this.map.put(ListViewAdapter.NAME, StringUtil.isEmpty(device.getName()) ? "NULL" : device.getName()); + BlooToothActivity.this.map.put(ListViewAdapter.DESCRIBE, device.getAddress()); + ((ListViewAdapter)listView.getAdapter()).add(map); + BlooToothActivity.this.dialogBar.dismiss(); + if(BlooToothActivity.this.map.size() > 0) { + if(flag) { + pass(); + flag = false; + } + + } + } + return; + } + if("android.bluetooth.adapter.action.DISCOVERY_FINISHED".equals(action)) { + if(listView.getChildCount() == 0) { + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.noFoundDev)); + } else { + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.found) + listView.getChildCount() + getSourceString(R.string.tsb)); + } + if(dialogBar.isShowing()) { + dialogBar.dismiss(); + } + } + } + }; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.blooteeth_layout); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + Intent intent = getIntent(); + running = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + } + + IntentFilter localIntentFilter1 = new IntentFilter("android.bluetooth.device.action.FOUND"); + registerReceiver(this.mReceiver, localIntentFilter1); + IntentFilter localIntentFilter2 = new IntentFilter("android.bluetooth.adapter.action.DISCOVERY_FINISHED"); + registerReceiver(this.mReceiver, localIntentFilter2); + this.listView = ((ListView)findViewById(R.id.lvDevice)); + ArrayList localArrayList = this.listViewData; + String[] arrayOfString = new String[2]; + arrayOfString[0] = ListViewAdapter.NAME; + arrayOfString[1] = ListViewAdapter.DESCRIBE; + int[] arrayOfInt = new int[2]; + arrayOfInt[0] = R.id.name; + arrayOfInt[1] = R.id.describe; + ListViewAdapter localListViewAdapter = new ListViewAdapter(this, localArrayList, R.layout.list_item, arrayOfString, arrayOfInt); + this.listView.setAdapter(localListViewAdapter); + this.mBtAdapter = BluetoothAdapter.getDefaultAdapter(); + this.dialogBar = new ProgressDialog(this); + this.dialogBar.setMax(100); + this.dialogBar.setProgress(0); + this.dialogBar.incrementProgressBy(1); + this.dialogBar.setMessage(getResources().getString(R.string.blScaning)); + this.dialogBar.setProgressStyle(0); + scanDevice(null); + } + + public boolean openBlueTooth(View view) { + if(mBtAdapter != null) { + if(!mBtAdapter.isEnabled()) { + Intent enableIntent = new Intent("android.bluetooth.adapter.action.REQUEST_ENABLE"); + startActivityForResult(enableIntent, 2); + return false; + } + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blOpened)); + return true; + } + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blNoSerport)); + return false; + } + + private String getSourceString(int id) { + return getResources().getString(id); + } + + public void scanDevice(View view) { + if(openBlueTooth(null)) { + if(mBtAdapter.isDiscovering()) { + mBtAdapter.cancelDiscovery(); + } + mBtAdapter.startDiscovery(); + dialogBar.show(); + } + } + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + switch(requestCode) { + case 2: + { + if(resultCode == -0x1) { + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.blOpened)); + if(mBtAdapter.isDiscovering()) { + mBtAdapter.cancelDiscovery(); + } + mBtAdapter.startDiscovery(); + dialogBar.show(); + return; + } + ((TextView)findViewById(R.id.tvState)).setText(getSourceString(R.string.bldenied)); + break; + } + } + } + + protected void onDestroy() { + super.onDestroy(); + if(mBtAdapter.isEnabled()) { + mBtAdapter.disable(); + } + unregisterReceiver(mReceiver); + } + + + public void pass() { + Toast.makeText(getApplicationContext(), getResources().getString(R.string.ins_gsensor_toast), + Toast.LENGTH_SHORT).show(); + buttonView.setSuccessColor(); + + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("bt", "true").commit(); + if (running) { + new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 0: + Intent intent; + intent = new Intent(BlooToothActivity.this, MotorTestActivity.class); + intent.putExtra("running", true); + startActivity(intent); + BlooToothActivity.this.finish(); + break; + + default: + break; + } + } + + }.sendEmptyMessageDelayed(0, 1000); + }else{ + buttonView.btn_left.setClickable(true); + } + } + + @Override + protected void onResume() { + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + super.onResume(); + } + + @Override + public void onClick(View arg0) { + Intent intent; + + intent = new Intent(this, MotorTestActivity.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("bt", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("bt", "false") + .commit(); + finish(); + break; + } + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + + +} diff --git a/app/src/main/java/mobile/miki/BrightnessTest.java b/app/src/main/java/mobile/miki/BrightnessTest.java new file mode 100644 index 0000000..8e4826b --- /dev/null +++ b/app/src/main/java/mobile/miki/BrightnessTest.java @@ -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 index 0000000..0a245d7 --- /dev/null +++ b/app/src/main/java/mobile/miki/CameraPreview.java @@ -0,0 +1,584 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.annotation.SuppressLint; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.hardware.Camera; +import android.os.Build; +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.DisplayMetrics; +import android.util.Log; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.Toast; + +import java.io.IOException; +import java.util.List; + +import mobile.miki.ageingmode.AgeingModeActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.util.FTUtils; + +public class CameraPreview extends BaseActivity implements SurfaceHolder.Callback, OnClickListener { + private static final String TAG = "AgeingCameraPreview"; + private Camera camera = null; + Handler handler; + Button bt; + private SurfaceHolder holder; + private boolean isAutoFocus; + private float mAspectRatio; + private int mH; + private int mHorizontalTileSize; + private int mPrvH; + private int mPrvW; + private int mVerticalTileSize; + private int mW; + private CameraSurfaceView preview; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + public static CameraPreview instance = null; + public SurfaceView surfaceView; + private DisplayMetrics mDisplayMetrics; + private static final int FRONT = 1;//前置摄像头标记 + private static final int BACK = 2;//后置摄像头标记 + private int currentCameraType = 2;//当前打开的摄像头标记 + private Button change_camera; + + public CameraPreview() { + mHorizontalTileSize = 16; + mVerticalTileSize = 16; + mAspectRatio = 1.0f; + //设置camera宽,高 + mPrvH = 360; + mPrvW = 360; + isAutoFocus = true; + handler = new Handler( ) { + + public void handleMessage(Message msg) { + if(camera != null) { + camera.autoFocus(null); + } + } + }; + } + +// static { +// System.loadLibrary("ftmjni"); +// } + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + boolean isEgeingMode = false; + private PowerManager powerManager = null; + private WakeLock wakeLock = null; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(0x1); + setContentView(R.layout.camera_preview_layout); + instance = this; + bt = (Button)findViewById(R.id.isZoom); + Log.i("AgeingCameraPreview", "platform:" + getString(R.string.project)); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + change_camera = (Button) findViewById(R.id.change_camera); + change_camera.setOnClickListener(this); + // s09双摄切换 + if (!FTUtils.isS06()) { + change_camera.setVisibility(View.GONE); + } + + init(); + ageingMode(); + } + + + private void init() { + + //preview = (CameraSurfaceView)findViewById(R.id.camera_preview); + surfaceView = (SurfaceView) findViewById(R.id.camera_preview); + //preview.setAspectRatio(mPrvW, mPrvH); + holder = surfaceView.getHolder(); + holder.addCallback(this); + holder.setType(0x3); + + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + + getCameraIntent(); + if(isEgeingMode) { + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); + wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock"); + if(wakeLock != null) { + //是否需计算锁的数量 + wakeLock.setReferenceCounted(false); + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); + } + + } + + } + + protected Camera.Size getBestPreSize(int surfaceWidth, int surfaceHeight, List preSizeList) { + + int ReqTmpWidth; + int ReqTmpHeight; + // 当屏幕为垂直的时候需要把宽高值进行调换,保证宽大于高 + boolean mIsPortrait=false; + if (mIsPortrait) { + ReqTmpWidth = surfaceHeight; + ReqTmpHeight = surfaceWidth; + } else { + ReqTmpWidth = surfaceWidth; + ReqTmpHeight = surfaceHeight; + } + //先查找preview中是否存在与surfaceview相同宽高的尺寸 + for(Camera.Size size : preSizeList){ + if((size.width == ReqTmpWidth) && (size.height == ReqTmpHeight)){ + return size; + } + } + + // 得到与传入的宽高比最接近的size + float reqRatio = ((float) ReqTmpWidth) / ReqTmpHeight; + float curRatio, deltaRatio; + float deltaRatioMin = Float.MAX_VALUE; + Camera.Size retSize = null; + for (Camera.Size size : preSizeList) { + curRatio = ((float) size.width) / size.height; + deltaRatio = Math.abs(reqRatio - curRatio); + if (deltaRatio < deltaRatioMin) { + deltaRatioMin = deltaRatio; + retSize = size; + } + } + return retSize; + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + } + + /** + * 处理老化模式的状态 + */ + 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(); + } + } + + 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"); + CameraPreview.this.registerReceiver(receiver, filter); + } + + private void getCameraIntent() { + Intent intent = getIntent(); + running = false; + pcbatest = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } catch (Exception e) { + e.printStackTrace(); + } + + } + 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(); + } + } + } + + protected void onResume() { + super.onResume(); + + + } + + + + @Override + protected void onPause() { + super.onPause(); + + + } + + private int roundUpToTile(int dimension, int tileSize, int maxDimension) { + return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension); + } + + protected void onDestroy() { + if(camera != null) { + camera.release(); + camera = null; + } + + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + + isAutoFocus = false; + stopLoop(null); + + if(ageHandler != null && runnable != null) { + ageHandler.removeCallbacks(runnable); + } + if (receiver != null) { + unregisterReceiver(receiver); + } + + if(handler != null) { + handler.removeCallbacksAndMessages(handler.obtainMessage()); + } + + super.onDestroy(); + } + + public void pullClose(View view) { + if(camera.getParameters().isZoomSupported()) { + camera.getParameters().setZoom(0x0); + } + } + + public void pullFar(View view) { + if(camera.getParameters().isZoomSupported()) { + camera.getParameters().setZoom(camera.getParameters().getMaxZoom()); + } + } + + public void pullLoop(View view) { + isAutoFocus = true; + new CameraPreview.AutoFocus( ).start(); + if(camera.getParameters().isZoomSupported()) { + bt.setText(getString(R.string.isZoom_y)); + bt.setTextColor(Color.GREEN); + bt.setBackgroundColor(0xFFDEAD); + bt.setVisibility(View.VISIBLE); + }else{ + bt.setText(getString(R.string.isZoom_n)); + bt.setBackgroundColor(0xFFDEAD); + bt.setTextColor(Color.RED); + bt.setVisibility(View.VISIBLE); + } + + } + + public void stopLoop(View view) { + isAutoFocus = false; + } + + class AutoFocus extends Thread { + + public void run() { + while(isAutoFocus) { + Log.i("AgeingCameraPreview", "autoFocus"); + try { + handler.sendMessage(handler.obtainMessage()); + sleep(0xbb8); + continue; + } catch(InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + public void surfaceCreated(SurfaceHolder holder) { + Log.e("zhangdi","surfaceCreated"); + try { + ///参数0为主摄像头。不加参数camera可能会为空 +// try { +// camera = Camera.open(0); +// } catch (Exception e) { +// Toast.makeText(CameraPreview.this, "resume_cameraError", Toast.LENGTH_LONG).show(); +// } + camera = Camera.open(0); + if(camera != null) { + Camera.Parameters parameters = camera.getParameters(); + parameters.setPictureFormat(0x100); + parameters.setFlashMode("on"); + List sizes = camera.getParameters().getSupportedPreviewSizes(); + mDisplayMetrics=getResources().getDisplayMetrics(); + Camera.Size bestsize=getBestPreSize(mDisplayMetrics.widthPixels,mDisplayMetrics.heightPixels,sizes); + parameters.setPreviewSize(bestsize.width,bestsize.height); + //parameters.setPictureSize(640,480); + camera.setPreviewDisplay(holder); + setCameraDirection(); + camera.setParameters(parameters); + camera.startPreview(); + } + + } catch(Exception exception) { + exception.printStackTrace(); + String model = Build.MODEL; + if(!model.equals("F6")){ //传奇报错 + Toast.makeText(CameraPreview.this, "cameraError", Toast.LENGTH_LONG).show(); + if(camera != null) { + camera.release(); + camera = null; + } + } + } + } + + public void surfaceDestroyed(SurfaceHolder holder) { + Log.e("zhangdi","surfaceDestroyed"); + if(camera != null) { + camera.stopPreview(); + camera.setPreviewCallback(null); + camera.release(); + camera = null; + } + } + + + public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { + try { + this.holder = holder; + Log.e("zhangdi","surfaceChanged"); + /*Camera.Parameters parameters = camera.getParameters(); + parameters.setPictureFormat(0x100); + parameters.setFlashMode("on"); + List sizes = camera.getParameters().getSupportedPreviewSizes(); + mDisplayMetrics=getResources().getDisplayMetrics(); + Camera.Size bestsize=getBestPreSize(mDisplayMetrics.widthPixels,mDisplayMetrics.heightPixels,sizes); + parameters.setPreviewSize(bestsize.width,bestsize.height); + parameters.setPictureSize(bestsize.width,bestsize.height); + Log.e("zhangdi","w:"+w+",h:"+h+",bestsize.width:"+bestsize.width+",bestsize.height:"+bestsize.height); +// parameters.setPreviewSize(w, h); + camera.setParameters(parameters);*/ + +// camera.startPreview(); +// return; + } catch(Exception localException1) { + } + } + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, WifiTestActiviy.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(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "true") + .commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "true") + .commit(); + } + if(camera != null) { + camera.release(); + camera = null; + } + finish(); + break; + case R.id.btn_two_right: + if(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "false") + .commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "false") + .commit(); + } + if(camera != null) { + camera.release(); + camera = null; + } + finish(); + break; + case R.id.change_camera: + try { + changeCamera(); + } catch (IOException e) { + e.printStackTrace(); + } + break; + } + + } + + Handler ageHandler = new Handler(); + Runnable runnable = new Runnable() { + + @Override + public void run() { + // handler自带方法实现定时器 + try { +// handler.postDelayed(this, TIME); + System.out.println("do..."); + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(CameraPreview.this,MikeTest.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..."); + } + } + }; + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + CameraPreview.this.finish(); + } + } + + private void setCameraDirection() { + android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); + android.hardware.Camera.getCameraInfo(0, info); + WindowManager mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); + int rotation = mWindowManager.getDefaultDisplay().getRotation(); + int degrees = 0; + switch (rotation) { + case Surface.ROTATION_0: + degrees = 0; + break; + case Surface.ROTATION_90: + degrees = 90; + break; + case Surface.ROTATION_180: + degrees = 180; + break; + case Surface.ROTATION_270: + degrees = 270; + break; + } + + int result; + if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { + result = (info.orientation + degrees) % 360; + result = (360 - result) % 360; // compensate the mirror + } else { // back-facing + result = (info.orientation - degrees + 360) % 360; + } + Log.i("dxc", "result " + result); + camera.setDisplayOrientation(result); + } + + @SuppressLint("NewApi") + private Camera openCamera(int type){ + int frontIndex =-1; + int backIndex = -1; + int cameraCount = Camera.getNumberOfCameras(); + Camera.CameraInfo info = new Camera.CameraInfo(); + for(int cameraIndex = 0; cameraIndex 0) && (height > 0)) { + if(mW > width) { + float defaultRatio = (float)width / (float)height; + if(defaultRatio < mAspectRatio) { + height = (int)((float)width / mAspectRatio); + } else if(defaultRatio > mAspectRatio) { + width = (int)((float)height * mAspectRatio); + } + width = roundUpToTile(width, mHorizontalTileSize, widthSpecSize); + height = roundUpToTile(height, mVerticalTileSize, heightSpecSize); + } else { + width = mW; + height = mH; + } + mW = width; + mH = height; + setMeasuredDimension(width, height); + return; + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + private int roundUpToTile(int dimension, int tileSize, int maxDimension) { + return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension); + } + + public void setAspectRatio(int width, int height) { + mW = width; + mH = height; + setAspectRatio(((float)width / (float)height)); + } + + public void setAspectRatio(float aspectRatio) { + mAspectRatio = aspectRatio; + requestLayout(); + invalidate(); + } +} \ 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 index 0000000..d2b5f4b --- /dev/null +++ b/app/src/main/java/mobile/miki/CompassSurfaceView.java @@ -0,0 +1,240 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Shader; +import android.graphics.Typeface; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.provider.Settings; +import android.telephony.TelephonyManager; +import android.util.AttributeSet; +import android.util.Log; +import android.view.SurfaceHolder; +import android.view.SurfaceView; + +class CompassSurfaceView extends SurfaceView implements SurfaceHolder.Callback { + private PictureRender curCompassRender; + private static String deviceId; + private float direction; + private String[] directionLabels; + //public static final unknown_type[] directionRanges; + public static final int[][] directionRanges ; + private Paint mPaint; + private float realDirection; + float mScale = 0.0f; + int midX = 160; + int midY = 160; + boolean ready = false; + private int textColor = -1; + + static { + int[][] arrayOfInt = new int[8][]; + int[] arrayOfInt1 = new int[0x2]; + arrayOfInt1[0x0] = -0x16; + arrayOfInt1[0x1] = 0x16; + arrayOfInt[0x0] = arrayOfInt1; + int[] arrayOfInt2 = new int[0x2]; + arrayOfInt2[0x0] = 0x17; + arrayOfInt2[0x1] = 0x43; + arrayOfInt[0x1] = arrayOfInt2; + int[] arrayOfInt3 = new int[0x2]; + arrayOfInt3[0x0] = 0x44; + arrayOfInt3[0x1] = 0x70; + arrayOfInt[0x2] = arrayOfInt3; + int[] arrayOfInt4 = new int[0x2]; + arrayOfInt4[0x0] = 0x71; + arrayOfInt4[0x1] = 0x9d; + arrayOfInt[0x3] = arrayOfInt4; + int[] arrayOfInt5 = new int[0x2]; + arrayOfInt5[0x0] = -0x43; + arrayOfInt5[0x1] = -0x17; + arrayOfInt[0x4] = arrayOfInt5; + int[] arrayOfInt6 = new int[0x2]; + arrayOfInt6[0x0] = -0x70; + arrayOfInt6[0x1] = -0x44; + arrayOfInt[0x5] = arrayOfInt6; + int[] arrayOfInt7 = new int[0x2]; + arrayOfInt7[0x0] = -0x9d; + arrayOfInt7[0x1] = -0x71; + arrayOfInt[0x6] = arrayOfInt7; + int[] arrayOfInt8 = new int[0x2]; + arrayOfInt8[0x0] = -0x9d; + arrayOfInt8[0x1] = 0x9d; + arrayOfInt[0x7] = arrayOfInt8; + directionRanges = arrayOfInt; + } + + public CompassSurfaceView(Context paramContext) { + super(paramContext); + init(paramContext); + } + + public CompassSurfaceView(Context paramContext, AttributeSet paramAttributeSet) { + super(paramContext, paramAttributeSet); + init(paramContext); + } + + private void drawBackground(Canvas paramCanvas) { + // getResources() = bg; + //(BitmapDrawable)getResources().setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); + //bg.setBounds(0x0, 0x0, (midX * 0x2), (midY * 0x2)); + //bg.draw(paramCanvas); + + Drawable localDrawable = getResources().getDrawable(2130837510); + ((BitmapDrawable)localDrawable).setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); + localDrawable.setBounds(0, 0, 2 * this.midX, 2 * this.midY); + localDrawable.draw(paramCanvas); + + } + + private void drawCompass(Canvas paramCanvas, float paramFloat) { + if(curCompassRender == null) { + updateCompassRender(); + } + if(curCompassRender == null) { + return; + } + curCompassRender.draw(paramCanvas, paramFloat, midX, midY); + } + + public String getDirectionLabel(float direction) { +/* int paramInt = (int)direction; + for(int i = 0x0; i < directionRanges.length; i = i + 0x1) { + arrayOfInt = directionRanges[i]; + if((i != (directionRanges.length - 0x1)) || (paramInt < arrayOfInt[0]) && (paramInt > arrayOfInt[0x1])) { + continue; + } + sb.append(directionLabels[i]); + break; + } + if(direction < 0x0) { + direction += 360.0f; + } + i = (int)direction; + sb.append(" "); + sb.append(i); + sb.append("\u00b0"); + return sb.toString();*/ + + + + StringBuilder localStringBuilder = new StringBuilder(); + int i = (int)direction; + for (int j = 0; ; j++) + if (j < directionRanges.length) + { + int[] arrayOfInt = directionRanges[j]; + if ((j == -1 + directionRanges.length) || ((i >= arrayOfInt[0]) && (i <= arrayOfInt[1]))) + localStringBuilder.append(this.directionLabels[j]); + } + else + { + if (direction < 0.0F) + direction += 360.0F; + int k = (int)direction; + localStringBuilder.append(" "); + localStringBuilder.append(k); + localStringBuilder.append("\u00b0"); + return localStringBuilder.toString(); + } + + + } + + public static String getDeviceId(Context paramContext) { + if(!(deviceId != null) && (!"".equals(deviceId))) { + + if(paramContext.checkCallingOrSelfPermission("android.permission.READ_PHONE_STATE") == 0) { + deviceId = ((TelephonyManager)paramContext.getSystemService("phone")).getDeviceId(); + } + if((deviceId == null) || ("".equals(deviceId))) { + deviceId = Settings.System.getString(paramContext.getContentResolver(), "android_id"); + } + + return deviceId; + } else if((deviceId == null) || ("".equals(deviceId))) { + deviceId = "android_id"; + } + return deviceId; + + } + + private void init(Context paramContext) { + mScale = getContext().getResources().getDisplayMetrics().density; + getHolder().addCallback(this); + mPaint = new Paint(); + mPaint.setAntiAlias(true); + mPaint.setARGB(0xff, 0x0, 0x0, 0x0); + mPaint.setStrokeWidth(8.0f); + mPaint.setColor(textColor); + mPaint.setTypeface(Typeface.SANS_SERIF); + mPaint.setTextSize((28.0f * mScale)); + mPaint.setTextAlign(Paint.Align.CENTER); + directionLabels = paramContext.getResources().getStringArray(R.array.directionLabels); + updateCompassRender(); + } + + private void updateCompassRender() { + try + { + int i = Math.min(2 * this.midX, 2 * this.midY); + if (i >= 200) + { + this.mPaint.setColor(this.textColor); + this.curCompassRender = new PictureRender(getContext(), i, R.drawable.ic_compass, R.drawable.ic_needle, 0); + } + } catch (Exception localException){ + localException.printStackTrace(); + } finally { + + } + } + + protected void onDraw(Canvas paramCanvas) { + if(!ready) { + return; + } + drawBackground(paramCanvas); + drawCompass(paramCanvas, direction); + } + + protected boolean onDrawnCheck(Canvas paramCanvas) { + if(ready) { + onDraw(paramCanvas); + return true; + } + return false; + } + + protected void onSizeChanged(int paramInt1, int paramInt2, int paramInt3, int paramInt4) { + super.onSizeChanged(paramInt1, paramInt2, paramInt3, paramInt4); + Log.e("LTCompass", "w=" + paramInt1 + ",h=" + paramInt2 + ",model:" + Build.MODEL + "," + Build.VERSION.RELEASE + ", " + Build.ID + ", " + getDeviceId(getContext())); + midX = (paramInt1 / 0x2); + midY = (paramInt2 / 0x2); + updateCompassRender(); + } + + public void setDirection(float paramFloat1, float paramFloat2) { + realDirection = paramFloat1; + direction = paramFloat2; + } + + public void surfaceChanged(SurfaceHolder paramSurfaceHolder, int paramInt1, int paramInt2, int paramInt3) { + } + + public void surfaceCreated(SurfaceHolder paramSurfaceHolder) { + ready = true; + } + + public void surfaceDestroyed(SurfaceHolder paramSurfaceHolder) { + ready = false; + } +} diff --git a/app/src/main/java/mobile/miki/Constants.java b/app/src/main/java/mobile/miki/Constants.java new file mode 100644 index 0000000..9c50561 --- /dev/null +++ b/app/src/main/java/mobile/miki/Constants.java @@ -0,0 +1,8 @@ +package mobile.miki; + +public class Constants { + + public static final int SINGLEITEM_TIMES = 1000 * 60 * 60; + public static final int CYCLE_ONE_ACTIVITY_TIMES = 1000 * 60; + public static final int AGING_MODE_SETRESULT = 1002; +} diff --git a/app/src/main/java/mobile/miki/DSPActivity.java b/app/src/main/java/mobile/miki/DSPActivity.java new file mode 100644 index 0000000..0a346f9 --- /dev/null +++ b/app/src/main/java/mobile/miki/DSPActivity.java @@ -0,0 +1,374 @@ +package mobile.miki; + +import android.content.Context; +import android.content.Intent; +import android.media.AudioFormat; +import android.media.AudioManager; +import android.media.AudioTrack; +import android.media.MediaPlayer; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; + +public class DSPActivity extends BaseActivity implements View.OnClickListener { + + //音频获取源 + //设置采样频率,44100是目前的标准 + private int sampleRateInHz = 16000; + //设置输入声道为默认 CHANNEL_IN_DEFAULT 双声道立体声 CHANNEL_IN_STEREO 单声道为 CHANNEL_IN_MONO + private int channelInConfig = AudioFormat.CHANNEL_IN_STEREO; + //设置输出声道为默认 CHANNEL_OUT_DEFAULT 双声道立体声 CHANNEL_OUT_STEREO 单声道为 CHANNEL_OUT_MONO + private int channelOutConfig = AudioFormat.CHANNEL_OUT_STEREO; + //音频数据格式:PCM16位 + private int audioFormat = AudioFormat.ENCODING_PCM_16BIT; + //录音状态 + private AudioTrack audioTrack = null; + boolean flag = true; + int dbmd4_handle = 0; + private String path = "/storage/emulated/0/Music/dsp.pcm"; + boolean isClose = false; + + private ButtonViewTwo buttonView; + boolean running; + private Button begain_record; + private MediaPlayer mediaPlayer; + private Button begain_play; + AudioManager audioManager; + int maxVolume; + + static { + // build.gradle里面 android\defaultConfig\ndk\moduleName 的名称 + // Android.mk, LOCAL_MODULE 的名称 + System.loadLibrary("dbmd4_test_jni"); + } + + //(JNIEnv *env, jobject thiz,jint card ,jint device,jint channels,jint bits,jint rate) + public static native int dbmd4_open(int card, int device, int channels, int bits, int rate); + + public static native int dbmd4_get_buffersize(int dbmd4_handle); + + //jint dbmd4_read_buffer(JNIEnv *env, jobject thiz,jint dbmd4_handle,jbyteArray buffer, jint length) + public static native int dbmd4_read_buffer(int dbmd4_handle, byte[] buffer, int length); + + //static void dbmd4_close(JNIEnv *env, jobject thiz,jint dbmd4_handle) + public static native void dbmd4_close(int dbmd4_handle); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dsp_layout); + initUI(); + setMaxVolum(); + } + + private void setMaxVolum() { + audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, + maxVolume, AudioManager.FLAG_SHOW_UI); + } + + private void begain() { + dbmd4_handle = dbmd4_open(2, 0, 2, 16, 16000); + Log.i("dxc", "dbmd4_handle " + dbmd4_handle); +// File file = new File("/storage/emulated/legacy/Music/16k.pcm"); +// playRecord(file, 0); + if (dbmd4_handle != 0) { + final int bufferSize = dbmd4_get_buffersize(dbmd4_handle); + final byte[] bytes = new byte[bufferSize]; //intToByteArray(bufferSize); + Log.i("dxc", "dbmd4_handle 1 bufferSize" + bufferSize); +// new Thread(new Runnable() { +// @Override +// public void run() { + int i = 10; + byte[] bytesCopy = new byte[0]; + while (i > 0) { +// playMedia(); + Log.i("dxc", "dbmd4_handle i" + i); + i--; + int result = dbmd4_read_buffer(dbmd4_handle, bytes, bufferSize); + Log.i("dxc", "dbmd4_handle dbmd4_read_buffer result" + result); + if (result != 0) { + bytesCopy = byteMerger(bytesCopy, bytes); + } else { + flag = false; + return; + } + } + Log.i("dxc", "dbmd4_handle byte len " + bytesCopy.length); + if (bytesCopy.length > 0) { + try { + writeBytesToFile(bytesCopy); + } catch (IOException e) { + e.printStackTrace(); + } + } + Toast.makeText(this, "录制结束", Toast.LENGTH_LONG).show(); + begain_record.setText(getResources().getString(R.string.startRecord)); + begain_record.setClickable(true); + mHandler.sendEmptyMessageDelayed(0, 0); +// } +// }).start(); + + } + + } + + private Handler mHandler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + Log.i("dxc","handleMessage"); + releaseMedia(); + dbmd4_close(dbmd4_handle); + isClose = true; + flag = false; + return false; + } + }); + + private void initUI() { + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + + begain_record = (Button) findViewById(R.id.begain_record); + begain_record.setOnClickListener(this); + + begain_play = (Button) findViewById(R.id.begain_play); + begain_play.setOnClickListener(this); + + Intent intent = getIntent(); + running = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + } + } + + private void playMedia() { + mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei); + if (mediaPlayer != null) { + mediaPlayer.stop(); + } + try { + mediaPlayer.setLooping(true); + mediaPlayer.prepare(); + mediaPlayer.start(); + return; + } catch (IllegalStateException e) { + return; + } catch (IOException e) { + } + } + + private void releaseMedia() { + if (mediaPlayer != null) { + mediaPlayer.release(); + } + } + + @Override + public void onClick(View view) { + Intent intent = new Intent(this, HeartRate.class); + intent.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + switch (view.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("dsp", "true").commit(); + + finish(); + + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("dsp", "false").commit(); + finish(); + + break; + case R.id.begain_record: + begain_record.setText(getResources().getString(R.string.recordStart)); + begain_record.setClickable(false); + begain(); + break; + + case R.id.begain_play: + File file = new File(path); + playRecord(file, 0); + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + // 防止多次关闭 + if (!isClose) { + dbmd4_close(dbmd4_handle); + } + delFile(path); + stopPlay(); + releaseMedia(); + mHandler.removeCallbacksAndMessages(null); + } + + /****播放录音***/ + public void playRecord(File file, int offset){ + try { + if (audioTrack != null){ + stopPlay(); + } + int length = (int) file.length(); + audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, + sampleRateInHz, + channelOutConfig, + audioFormat, + length, + AudioTrack.MODE_STREAM); + audioTrack.play(); + FileInputStream is = new FileInputStream(file); + BufferedInputStream bis = new BufferedInputStream(is); + DataInputStream dis = new DataInputStream(bis); + byte []by = new byte[length]; + int i = 0; + while (dis.available() > 0){ + by[i] = dis.readByte(); + i++; + } + dis.close(); + bis.close(); + is.close(); + playAudioTrack(by, offset, length); +// stopPlay(); + }catch (Exception e){ + e.printStackTrace(); + } + } + + /** + *音频数据写入audioTrack + * @param audioData + * @param offset + * @param length + */ + public void playAudioTrack(byte []audioData, int offset, int length){ + try { + if (audioData == null || length == 0){ + return ; + } + audioTrack.write(audioData, offset, length); + }catch (Exception e){ + e.printStackTrace(); + } + } + + /****停止播放***/ + public void stopPlay(){ + try { + if (audioTrack != null){ +// audioTrack.stop(); + audioTrack.release(); + audioTrack = null; + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + + public static byte[] byteMerger(byte[] bt1, byte[] bt2) { + byte[] bt3 = new byte[bt1.length + bt2.length]; + int i = 0; + for (byte bt : bt1) { + bt3[i] = bt; + i++; + } + + for (byte bt : bt2) { + bt3[i] = bt; + i++; + } + return bt3; + } + + public static byte[] intToByteArray(int i) { + byte[] result = new byte[4]; + // 由高位到低位 + result[0] = (byte) ((i >> 24) & 0xFF); + result[1] = (byte) ((i >> 16) & 0xFF); + result[2] = (byte) ((i >> 8) & 0xFF); + result[3] = (byte) (i & 0xFF); + return result; + } + + public static int bytesToInt(byte[] src, int offset) { + int value; + value = (int) ((src[offset] & 0xFF) + | ((src[offset+1] & 0xFF)<<8) + | ((src[offset+2] & 0xFF)<<16) + | ((src[offset+3] & 0xFF)<<24)); + return value; + } + + public static char byteToChar(byte[] b) { + int hi = (b[0] & 0xFF) << 8; + int lo = b[1] & 0xFF; + return (char) (hi | lo); + } + + public void writeBytesToFile(byte[] bs) throws IOException { +// String s = "aaaaaaaa"; +// byte[] bs= s.getBytes(); + OutputStream out = new FileOutputStream(path); + InputStream is = new ByteArrayInputStream(bs); + byte[] buff = new byte[1024]; + int len = 0; + while((len=is.read(buff))!=-1){ + out.write(buff, 0, len); + } + is.close(); + out.close(); + } + + public void delFile(String path){ + File file=new File(path); + if(file.exists()) + file.delete(); + } + +} diff --git a/app/src/main/java/mobile/miki/DialerTestActivity.java b/app/src/main/java/mobile/miki/DialerTestActivity.java new file mode 100644 index 0000000..c2ee799 --- /dev/null +++ b/app/src/main/java/mobile/miki/DialerTestActivity.java @@ -0,0 +1,198 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.telephony.TelephonyManager; +import android.view.View; + +import mobile.miki.ageingmode.AgeingModeActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class DialerTestActivity extends BaseActivity implements android.view.View.OnClickListener{ + private static final String TAG = "DialerTestActivity"; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + boolean isEgeingMode = false; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.dialer_test_layout); + + getRingIntent(); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + //非老化模式就直接拨出电话 + + if(isEgeingMode) { + ComponentName componentName = new ComponentName("com.android.dialer", "com.android.dialer.DialtactsActivity"); + Intent dialerIntent = new Intent(Intent.ACTION_MAIN); + dialerIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + dialerIntent.setComponent(componentName); + try { + startActivity(dialerIntent); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + testCallBtnClicked(null); + } + + } + + private void getRingIntent() { + Intent intent = getIntent(); + running = false; + pcbatest = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + if (intent != null) { + try { + isEgeingMode = intent.getBooleanExtra("ageing_mode", false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public void testCallBtnClicked(View view) { + //Intent call = new Intent(Intent.ACTION_CALL_EMERGENCY, Uri.parse("tel:10086")); +// Intent call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:112")); + Intent call = null; + if (isChinaMobile(this)) { + call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10086")); + } else if (isChinaUnicom(this)) { + call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10010")); + } else if(isChinaTelecom(this)) { + call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:10000")); + } else { + call = new Intent("android.intent.action.CALL_PRIVILEGED",Uri.parse("tel:"+112)); + } + startActivity(call); + } + + + @Override + public void onClick(View arg0) { + + Intent intent; + if (pcbatest){ + intent = new Intent(this, GravitySensorActivity.class); + + }else{ + intent = new Intent(this, BrightnessTest.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(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_dialer", "true") + .commit(); + }else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("dialer", "true") + .commit(); + } + finish(); + break; + case R.id.btn_two_right: + if(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_dialer", "false") + .commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("dialer", "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(); + } + } + + + /** SIM卡是中国移动 */ + public static boolean isChinaMobile(Context context) { + String imsi = getSimOperator(context); + if (imsi == null) return false; + return imsi.startsWith("46000") || imsi.startsWith("46002") || imsi.startsWith("46007"); + } + + /** SIM卡是中国联通 */ + public static boolean isChinaUnicom(Context context) { + String imsi = getSimOperator(context); + if (imsi == null) return false; + return imsi.startsWith("46001"); + } + + /** SIM卡是中国电信 */ + public static boolean isChinaTelecom(Context context) { + String imsi = getSimOperator(context); + if (imsi == null) return false; + return imsi.startsWith("46003"); + } + + private static String getSimOperator(Context context) { + TelephonyManager tm = (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE); + return tm.getSubscriberId(); + } +} diff --git a/app/src/main/java/mobile/miki/GpsTest.java b/app/src/main/java/mobile/miki/GpsTest.java new file mode 100644 index 0000000..db60476 --- /dev/null +++ b/app/src/main/java/mobile/miki/GpsTest.java @@ -0,0 +1,473 @@ +package mobile.miki; + +import android.content.Context; +import android.content.Intent; +import android.location.GpsSatellite; +import android.location.GpsStatus; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.Log; +import android.view.Display; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class GpsTest extends BaseActivity implements + android.view.View.OnClickListener { + private LocationManager locationManager; + Location location; + + private String locationInfo; + private List numSatelliteList = new ArrayList(); // 卫星信号 + private List max3Satellite = new ArrayList(); // 卫星信号 + private int satelliteInfo = 0; + + private TextView tvGps; + private TextView tvResult; + private TextView tv_satellites; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + + private ReadGpsThread readGpsThread; + private double longitude; + private double latitude; + + int gpsMode; + int numberOfSatellites; + + @Override + protected void onCreate(Bundle arg0) { + // TODO Auto-generated method stub + super.onCreate(arg0); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.gps_test_new); +// initGPS(); + //打开gps开关 + gpsMode = Settings.Secure.getInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE, + Settings.Secure.LOCATION_MODE_OFF); + if (gpsMode != Settings.Secure.LOCATION_MODE_HIGH_ACCURACY) { + Settings.Secure.putInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); + } + + Intent intent = getIntent(); + 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); + tvGps = (TextView) findViewById(R.id.tv_gps); + tvResult = (TextView) findViewById(R.id.tv_result); + tvResult.setText(getResources().getString(R.string.gps_searching)); + tv_satellites = (TextView)findViewById(R.id.tv_satellites); + // 获取location对象 + locationManager = (LocationManager) this + .getSystemService(Context.LOCATION_SERVICE); + readGpsThread = new ReadGpsThread(); + readGpsThread.start(); + locationManager.addGpsStatusListener(statusListener);//搜星 + getLocationInfo(); + + } + + public String getLocationInfo() { + + location = getBestLocation(locationManager); + // locationInfo = updateView(location); + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, + 3000, 8, locationListener); + // 定位成功返回数据 +// tvGps.setText(locationInfo); +// if (!"".equals(locationInfo)) { +// pass(); +// } + + return locationInfo; + } + + boolean isFrist = true; + + private String updateView(Location location) { + + if (location != null) { + longitude = location.getLongitude(); + latitude = location.getLatitude(); + if (longitude > 0 && latitude > 0) { + tvResult.setText(getResources().getString( + R.string.location_sucess)); + if (readGpsThread != null) { + readGpsThread.endThread(); + } + if (isFrist) { + isFrist = false; + pass();// 定位成功,自动跳转2016.9.19 tyy + } + + } else { + tvResult.setText(getResources().getString( + R.string.location_fail)); + } + + long gpsTime = location.getTime(); + + double altitude = location.getAltitude();// 海拔 + + // 速度 + float speed = location.getSpeed();// 速度 单位 m/s + speed = (speed * 60) / 1000; // 单位转换 km/h + // 保留一位小数点 + DecimalFormat dfSpeed = new DecimalFormat("#.0"); + String strSpeed = dfSpeed.format(speed); + speed = Float.parseFloat(strSpeed); + int intSpeed = (int) (speed * 10); + // SimpleLogger.d("intSpeed:"+intSpeed); + + // 经纬度 保留6位小数点 + DecimalFormat df = new DecimalFormat("#.000000"); + String strLatitude = df.format(latitude); + String strLongitude = df.format(longitude); + + StringBuffer sb = new StringBuffer(); + String string = getResources().getString(R.string.longitude); + String string2 = getResources().getString(R.string.latitude); + sb.append(string + strLongitude + "\n" + string2 + strLatitude); + // SimpleLogger.d("satelliteInfo:"+satelliteInfo); + return sb.toString(); + } else { + // textView.setText(""); + return ""; + } + } + + public double[] getGpsInfo() { + String tude = locationInfo; + if (!TextUtils.isEmpty(tude)) { + String[] longitudeAndLatitude = tude.split(" "); + String longitude = longitudeAndLatitude[0]; + String latitude = longitudeAndLatitude[1]; + + return new double[]{Double.parseDouble(latitude), + Double.parseDouble(longitude)}; + } + return null; + } + + /** + * 获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时 + * ,则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空 + * + * @param locationManager + * @return + */ + private Location getBestLocation(LocationManager locationManager) { + Location result = null; + if (locationManager != null) { + result = locationManager + .getLastKnownLocation(LocationManager.GPS_PROVIDER); + if (result != null) { + + return result; + } else { + result = locationManager + .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); + return result; + } + } + return result; + } + + class ReadGpsThread extends Thread { + private boolean isRunning = false; + private int DELAY_MS = 1000; + private int count = 0; + + public ReadGpsThread() { + isRunning = true; + } + + public void endThread() { + isRunning = false; + readGpsThread = null; + } + + @Override + public void run() { + while (isRunning) { + count++; + if (numberOfSatellites >= 3) { + return; + } + // 15秒没定位成功,则失败 + if (count == 120) { + Message msg = new Message(); + temHandler.sendMessage(msg); + if (readGpsThread != null) { + endThread(); + return; + } + } + try { + Thread.sleep(DELAY_MS); + } catch (Exception e) { + // TODO: handle exception + } + } + super.run(); + } + } + + Handler temHandler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + tvResult.setText(getResources().getString( + R.string.location_fail)); + if (readGpsThread != null) { + readGpsThread.endThread(); + } + return false; + } + }); + + @Override + protected void onDestroy() { + super.onDestroy(); + if (readGpsThread != null) { + readGpsThread.endThread(); + } + isFrist = false; + flag = false; + if (locationManager != null) { + locationManager.removeUpdates(locationListener); + locationManager.removeGpsStatusListener(statusListener); + } + if (locationListener != null) { + locationListener = null; + } + if (statusListener != null) { + statusListener = null; + } + + //还原gps状态 + Settings.Secure.putInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE, gpsMode); + } + + + @Override + public void onClick(View arg0) { + Display myDisplay = getWindowManager().getDefaultDisplay(); + Intent intent; + intent = new Intent(this, RingtoneActivity.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("gps", "true").commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("gps", "false").commit(); + finish(); + break; + } + } + + public void pass() { + Toast.makeText(getApplicationContext(), + getResources().getString(R.string.ins_gsensor_toast), + Toast.LENGTH_SHORT).show(); + buttonView.setSuccessColor(); + + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("gps", "true").commit(); + if (running) { + new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 0: + + Intent intent; + intent = new Intent(GpsTest.this, + RingtoneActivity.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest", pcbatest); + startActivity(intent); + GpsTest.this.finish(); + break; + default: + break; + } + } + + }.sendEmptyMessageDelayed(0, 1000); + } else { + buttonView.btn_left.setClickable(true); + } + + + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + + + LocationListener locationListener = new LocationListener() { + + @Override + public void onStatusChanged(String provider, int status, + Bundle extras) { + } + + @Override + public void onProviderEnabled(String provider) { +// locationInfo = updateView(locationManager +// .getLastKnownLocation(provider)); + } + + @Override + public void onProviderDisabled(String provider) { +// locationInfo = updateView(null); + } + + @Override + public void onLocationChanged(Location location) { + location = getBestLocation(locationManager);// 每次都去获取GPS_PROVIDER优先的location对象 +// locationInfo = updateView(location); + } + }; + + + /////////////////搜索卫星数 + boolean flag = true;//只操作一次pass + private GpsStatus.Listener statusListener = new GpsStatus.Listener() { + public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数 + GpsStatus status = locationManager.getGpsStatus(null); //取当前状态 + int satelliteInfo = updateGpsStatus(event, status); + numberOfSatellites = satelliteInfo; + if (numberOfSatellites >= 3) { + tvResult.setText(getResources().getString( + R.string.location_sucess)); + if (readGpsThread != null) { + readGpsThread.endThread(); + } + if (flag) { + flag = false; + pass(); + } + } + + } + }; + + private void get3MaxSnrSatellite(GpsSatellite gst){ + + float snr = gst.getSnr(); + max3Satellite.add(gst);//先添加进来。 + + //从大到小排序 + for(int i=0;i3){ //超过三个,谁小就删掉 + max3Satellite.remove(3); + } + + } + private int updateGpsStatus(int event, GpsStatus status) { + StringBuilder sb2 = new StringBuilder(""); + float strengh = 0; + if (status == null) { + sb2.append("搜索到卫星个数:" + 0); + } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) { + int maxSatellites = status.getMaxSatellites(); + Iterator it = status.getSatellites().iterator(); + numSatelliteList.clear(); + int count = 0; + while (it.hasNext() && count <= maxSatellites) { + GpsSatellite s = it.next(); + float snr = s.getSnr(); + if (snr >= 20) {//只有信躁比不为0的时候才算搜到了星 + strengh = snr; +// Toast.makeText(this, "信躁比大于20", Toast.LENGTH_LONG).show(); + //排序取得最大3个SNR + get3MaxSnrSatellite(s); + } + numSatelliteList.add(s); + count++; + } + sb2.append("搜索到卫星个数(SNR>20):" + numSatelliteList.size()+" \n Max 3 SNRs[ " ); + for (int i=0;i= 20 && numSatelliteList.size() >= 3) { + return numSatelliteList.size(); + } + + return 0; + } + //////////////// + +} diff --git a/app/src/main/java/mobile/miki/GravitySensorActivity.java b/app/src/main/java/mobile/miki/GravitySensorActivity.java new file mode 100644 index 0000000..2a9e878 --- /dev/null +++ b/app/src/main/java/mobile/miki/GravitySensorActivity.java @@ -0,0 +1,209 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.Context; +import android.content.Intent; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class GravitySensorActivity extends BaseActivity + implements SensorEventListener, android.view.View.OnClickListener { + private SensorManager sensorManager; + boolean gb_up = false; + boolean gb_left = false; + boolean gb_right = false; + boolean gb_down = false; + ImageView gs_up; + ImageView gs_left; + ImageView gs_right; + ImageView gs_down; + String s1; + TextView t1; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + TextView xyzValue; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + s1 = getString(R.string.ins_gsensor_toast); + setContentView(R.layout.gravity_sensor_layout); + Intent intent = getIntent(); + 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); + + //pcba测试的话,可以直接看数值人工测试是否成功。 + if (pcbatest) { + buttonView.btn_left.setClickable(true); + buttonView.setSuccessColor(); + }else{ + buttonView.btn_left.setClickable(false); + } + gs_up = (ImageView) findViewById(R.id.img_gsu); + + gs_left = (ImageView) findViewById(R.id.img_gsl); + + gs_right = (ImageView) findViewById(R.id.img_gsr); + + gs_down = (ImageView) findViewById(R.id.img_gsd); + t1 = (TextView) findViewById(R.id.ins); + xyzValue = (TextView) findViewById(R.id.xyz_value); + sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); + sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 0x0); + handler.sendEmptyMessageDelayed(0, 500); + } + + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + + public void onSensorChanged(SensorEvent event) { + Log.i("dxc", "onSensorChanged x:" + event.values[0x0] + " y:" + event.values[0x1] + " z:" + event.values[0x2]); + xyzValue.setText("x:" + String .format("%.2f",event.values[0x0]) + " ,y:" + String .format("%.2f",event.values[0x1]) + " ,z:" + String .format("%.2f",event.values[0x2])); + ((TextView) findViewById(R.id.tvGraX)).setText(String.valueOf(event.values[0x0])); + ((TextView) findViewById(R.id.tvGraY)).setText(String.valueOf(event.values[0x1])); + ((TextView) findViewById(R.id.tvGraZ)).setText(String.valueOf(event.values[0x2])); + if (event.values[0x0] > 4.0 && !gb_left) { + gs_left.setImageResource(R.drawable.gs_2_l); + gb_left = true; + } else if (event.values[0x0] < -4.0 && !gb_right) { + gs_right.setImageResource(R.drawable.gs_2_r); + gb_right = true; + } else if (event.values[0x1] > 5.0 && !gb_down) { + gs_down.setImageResource(R.drawable.gs_2_d); + gb_down = true; + } else if (event.values[0x1] < -3.0 && !gb_up) { + gs_up.setImageResource(R.drawable.gs_2_u); + gb_up = true; + } + } + + protected void onDestroy() { + sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)); + sensorManager = null; + super.onDestroy(); + } + + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, BatteryTestActivity.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("Gsensor", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Gsensor", "false") + .commit(); + finish(); + break; + } + } + + Runnable runnable = new Runnable() { + + @Override + public void run() { + + } + }; + + Handler handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 0: + if (gb_left && gb_right && gb_down && gb_up) { + handler.removeMessages(0); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit() + .putString("Gsensor", "true").commit(); + Toast.makeText(GravitySensorActivity.this, getResources().getString(R.string.ins_gsensor_toast), + Toast.LENGTH_SHORT).show(); + + buttonView.setSuccessColor(); + + if (running) { + Intent intent = new Intent(GravitySensorActivity.this, BatteryTestActivity.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest", pcbatest); + startActivity(intent); + finish(); + }else{ + buttonView.btn_left.setClickable(true); + } + + }else{ + handler.sendEmptyMessageDelayed(0, 500); + } + + break; + + + + + + default: + break; + } + } + + }; + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + +} diff --git a/app/src/main/java/mobile/miki/GridAdapter.java b/app/src/main/java/mobile/miki/GridAdapter.java new file mode 100644 index 0000000..4f121f7 --- /dev/null +++ b/app/src/main/java/mobile/miki/GridAdapter.java @@ -0,0 +1,43 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.SimpleAdapter; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GridAdapter extends SimpleAdapter { + public static final String CELL_IMAGE = "cellImage"; + public static final String CELL_LABEL = "cellLabel"; + private LayoutInflater inflater; + //private ArrayList> listData = new ArrayList>(); + private ArrayList> listData = new ArrayList(); + + public GridAdapter(Context context, List> data, int resource, String[] from, int[] to) { + super(context, data, resource, from, to); + inflater = (LayoutInflater)context.getSystemService("layout_inflater"); + listData = (ArrayList)data; + } + + public View getView(int position, View convertView, ViewGroup parent) { + if(convertView == null) { + convertView = inflater.inflate(R.layout.grid_cell, null); + } + HashMap map = (HashMap)listData.get(position); + ((ImageView)convertView.findViewById(R.id.cellImage)).setImageResource(((Integer)map.get("cellImage")).intValue()); + ((TextView)convertView.findViewById(R.id.cellLabel)).setText(String.valueOf(map.get("cellLabel"))); + return convertView; + } +} diff --git a/app/src/main/java/mobile/miki/HeartRate.java b/app/src/main/java/mobile/miki/HeartRate.java new file mode 100644 index 0000000..b8bfc22 --- /dev/null +++ b/app/src/main/java/mobile/miki/HeartRate.java @@ -0,0 +1,69 @@ +package mobile.miki; + +import android.content.Intent; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.View; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; + +public class HeartRate extends BaseActivity implements View.OnClickListener { + + private ButtonViewTwo buttonView; + boolean running; + + static { + System.loadLibrary("heartrate_test_jni"); + } + public static native int get_heartrate(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.heartrate_layout); + initView(); + int heartrate = get_heartrate(); + Log.i("dxc", "heartrate: " + heartrate); + } + + private void initView() { + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + } + + @Override + public void onClick(View view) { + Intent intent = new Intent(this, SimDetectActivity.class); + intent.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + // TestResult testResult = (TestResult) getApplicationContext(); + switch (view.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent1); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent1); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "false") + .commit(); + finish(); + break; + } + } +} diff --git a/app/src/main/java/mobile/miki/KeysTestActivity.java b/app/src/main/java/mobile/miki/KeysTestActivity.java new file mode 100644 index 0000000..9a74fe1 --- /dev/null +++ b/app/src/main/java/mobile/miki/KeysTestActivity.java @@ -0,0 +1,361 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.app.KeyguardManager; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.PowerManager; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.Display; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; + +import cn.davidsu.library.LineWrapContainer; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; +import mobile.miki.util.FTUtils; + +public class KeysTestActivity extends BaseActivity implements + android.view.View.OnClickListener { +/* + public static final String AUTO_KEYS_TEST = "mobile.miki.KeysTestActivity"; + public static final String KEY_CODE = "keyCode"; + public static final String NEED_BTN_TAG = "needBtn"; + private String TAG; +*/ + BroadcastReceiver broadcastReceiver; + private boolean isTesting; + private BroadcastReceiver mBroadcastReceiver; + private KeyguardManager.KeyguardLock mKeyguardLock; + private KeyguardManager mKeyguardManager; + private KeysTestActivity.ScreenOnOffReceiver screenOnOffReceiver; + private PowerManager.WakeLock wakeLock; + boolean running; + private ButtonViewTwo buttonView; +/* + private TextView value_KEYCODE_YEN; + private TextView home1; + private TextView home2; + private TableRow TableRow1; + private TableRow TableRow2; + private TableRow TableRow3; + private TextView tv_name2; + + private boolean key1Pass = false; + private boolean key2Pass = false; +*/ + private LineWrapContainer lwc; + private ArrayList mKeyMapList = new ArrayList(); + + // G9 的左右按键 +// private static final int KEYCODE_CUSTOM_LEFT = 498; +// private static final int KEYCODE_CUSTOM_RIGHT = 499; + private static final int KEYCODE_CUSTOM_LEFT = KeyEvent.KEYCODE_POWER; + private static final int KEYCODE_CUSTOM_RIGHT = KeyEvent.KEYCODE_VOLUME_DOWN; + + private Key[] keyMapsDefault = {new Key(KeyEvent.KEYCODE_POWER, "Power")}; + private Key[] keyMapsSUGAR = {new Key(KEYCODE_CUSTOM_LEFT, "Left") + , new Key(KEYCODE_CUSTOM_RIGHT, "Right")}; + private Key[] keyMapsLieBao = {new Key(KeyEvent.KEYCODE_POWER, "Power") + , new Key(KeyEvent.KEYCODE_YEN, "Key 1")}; + + public KeysTestActivity() { + // TAG = "KeysTestActivity"; + mKeyguardManager = null; + mKeyguardLock = null; + isTesting = true; + broadcastReceiver = new BroadcastReceiver() { + public void onReceive(Context context, Intent intent) { + int keyCode = intent.getExtras().getInt("keyCode"); + } + }; + mBroadcastReceiver = new BroadcastReceiver() { + + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if ("android.intent.action.CLOSE_SYSTEM_DIALOGS".equals(action)) { + String reason = intent.getStringExtra("reason"); + if ("homekey".equals(reason)) { + if (isTesting) { + isTesting = false; + } + } + } + } + }; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.keys_test_layout); + Display myDisplay = getWindowManager().getDefaultDisplay(); + MyApplication.getInstance().addActivity(this); + initView(); + Intent intent = getIntent(); + running = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + } + mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); + screenOnOffReceiver = new ScreenOnOffReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction("android.intent.action.SCREEN_ON"); + intentFilter.addAction("android.intent.action.SCREEN_OFF"); + registerReceiver(screenOnOffReceiver, intentFilter); + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + isTesting = true; + + if (FTUtils.isLieBao()) { + mKeyMapList.addAll(Arrays.asList(keyMapsLieBao)); + } else if (FTUtils.isSugar()) { + mKeyMapList.addAll(Arrays.asList(keyMapsSUGAR)); + } else { + mKeyMapList.addAll(Arrays.asList(keyMapsDefault)); + } + + updateKeyMapView(); + } + + private void initView() { +/* + value_KEYCODE_YEN = (TextView) findViewById(R.id.tv_value); + home1 = (TextView) findViewById(R.id.tv_value2); + home2 = (TextView) findViewById(R.id.tv_value3); + + TableRow1 = (TableRow) findViewById(R.id.tl_1); + TableRow2 = (TableRow) findViewById(R.id.tl_2); + TableRow3 = (TableRow) findViewById(R.id.tl_3); + tv_name2 = (TextView) findViewById(R.id.tv_name2); + if (FTUtils.isLieBao()) { + tv_name2.setText(R.string.keyPower); + TableRow3.setVisibility(View.GONE); + } else if (FTUtils.isSugar()) { + TableRow1.setVisibility(View.GONE); + } +*/ + lwc = (LineWrapContainer) findViewById(R.id.view_lwc); + // s06 hall开关 + if (FTUtils.isS06()) { + lwc.setVisibility(View.GONE); + Toast.makeText(this, "霍尔开关测试", Toast.LENGTH_LONG).show(); + } + } + + + protected void onResume() { + super.onResume(); + IntentFilter intentFilter = new IntentFilter( + "mobile.miki.KeysTestActivity"); + registerReceiver(broadcastReceiver, intentFilter); + IntentFilter mBroadcastIntentFilter = new IntentFilter( + "android.intent.action.CLOSE_SYSTEM_DIALOGS"); + registerReceiver(mBroadcastReceiver, mBroadcastIntentFilter); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + Log.e("dxc", " onKeyDown keyCode:" + keyCode); + if (FTUtils.isS06() && keyCode == KeyEvent.KEYCODE_BACK) { + pass(); + return true; + } +/* + switch (keyCode) { + case KeyEvent.KEYCODE_YEN: + value_KEYCODE_YEN.setText(R.string.pass_test); + key1Pass = true; + if (key1Pass && key2Pass) { + pass(); + } + return true; +*/ + if (removeKey(keyCode)) { + updateKeyMapView(); + return true; + } + + return super.onKeyDown(keyCode, event); + } + + + public void onAttachedToWindow() { + super.onAttachedToWindow(); + } + + class ScreenOnOffReceiver extends BroadcastReceiver { + + public void onReceive(Context context, Intent intent) { + if ("android.intent.action.SCREEN_ON".equals(intent.getAction())) { + return; + } + if ("android.intent.action.SCREEN_OFF".equals(intent.getAction())) { + KeysTestActivity.this.mKeyguardLock = KeysTestActivity.this.mKeyguardManager + .newKeyguardLock(""); + // KeysTestActivity.this.mKeyguardLock.disableKeyguard(); + KeysTestActivity.this.wakeLock = ((PowerManager) context + .getSystemService(Context.POWER_SERVICE)).newWakeLock( + PowerManager.ACQUIRE_CAUSES_WAKEUP + | PowerManager.SCREEN_DIM_WAKE_LOCK, "mobile.miki:Tag"); + KeysTestActivity.this.wakeLock.acquire(); +/* + if (home1.getText().toString().equals(getString(R.string.pass_test))) { + key1Pass = true; + home2.setText(R.string.pass_test); + } + home1.setText(R.string.pass_test); + key2Pass = true; + if (key1Pass && key2Pass && (FTUtils.isSugar() || FTUtils.isLieBao())) { + pass(); + } else if (!(FTUtils.isSugar() || FTUtils.isLieBao())) { + pass(); + } +*/ + + if (removeKey(KeyEvent.KEYCODE_POWER)) { + updateKeyMapView(); + } + } + } + } + + protected void onDestroy() { + if (mKeyguardLock != null) { + wakeLock.acquire(); + } + isTesting = false; + unregisterReceiver(screenOnOffReceiver); + unregisterReceiver(broadcastReceiver); + unregisterReceiver(mBroadcastReceiver); + super.onDestroy(); + } + + public void onReturnBtnClicked(View view) { + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + isTesting = false; + try { + Runtime.getRuntime().exec("logcat -c"); + } catch (IOException e) { + e.printStackTrace(); + } + finish(); + } + + } + + + @Override + public void onClick(View arg0) { + + Intent intent = new Intent(this, TestMainActivity.class); + if (FTUtils.isSugar()) { + intent = new Intent(this, BlooToothActivity.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("keys", "true").commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("keys", "false").commit(); + finish(); + break; + } + } + + private void pass() { + buttonView.setSuccessColor(); + if (running) { + Intent intent = new Intent(this, TestMainActivity.class); + if (FTUtils.isSugar() || FTUtils.isS06()) { + intent = new Intent(this, BlooToothActivity.class); + } + intent.putExtra("running", true); + startActivity(intent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("keys", "true").commit(); + finish(); + } else { + buttonView.btn_left.setClickable(true); + } + } + + private boolean removeKey(int keyCode) { + boolean found = false; + for (Key key : mKeyMapList) { + if (key.code == keyCode) { + mKeyMapList.remove(key); + found = true; + break; + } + } + + return found; + } + + private void updateKeyMapView() { + LayoutInflater inflater = LayoutInflater.from(this); + lwc.removeAllViews(); + + for (Key key : mKeyMapList) { + TextView item = (TextView) inflater.inflate(R.layout.keys_test_item, lwc, false); + item.setText(key.name); + lwc.addView(item); + } + + if (mKeyMapList.size() == 0) { + pass(); + } + } + + class Key { + int code; + String name; + + Key(int code, String name) { + this.code = code; + this.name = name; + } + } +} diff --git a/app/src/main/java/mobile/miki/LCDtestAgeing.java b/app/src/main/java/mobile/miki/LCDtestAgeing.java new file mode 100644 index 0000000..9c1c874 --- /dev/null +++ b/app/src/main/java/mobile/miki/LCDtestAgeing.java @@ -0,0 +1,323 @@ +package mobile.miki; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.os.SystemClock; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.RelativeLayout; +import android.widget.SeekBar; +import android.widget.SeekBar.OnSeekBarChangeListener; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import mobile.miki.lcd.LcdJudgActivity; + +public class LCDtestAgeing extends BaseActivity implements OnSeekBarChangeListener { + private TimerTask task; + private TimerTask seekbarTask; + private Timer timer; + public static int[] BC =null; + RelativeLayout r1; + private PowerManager powerManager = null; + private WakeLock wakeLock = null; + int i = 0; + int b ; + private SeekBar ScreenBrightnessSeekBar; + boolean isEgeingMode = false; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private boolean isShowSeekBar = true; + public static LCDtestAgeing instance = null; + + static { + int[] bkcolor = new int[14]; + bkcolor[0] = Color.RED; + bkcolor[1] = Color.BLUE; + bkcolor[2] = Color.YELLOW; + bkcolor[3] = Color.GREEN; + bkcolor[4] = Color.WHITE; + bkcolor[5] = Color.BLACK; + bkcolor[6] = Color.GRAY; + bkcolor[7] = Color.CYAN; + bkcolor[8] = Color.MAGENTA; + bkcolor[9] = R.drawable.pic1; + bkcolor[10] = R.drawable.pic2; + bkcolor[11] = R.drawable.pic3; + bkcolor[12] = R.drawable.pic4; + bkcolor[13] = R.drawable.pic5; + BC =bkcolor; + } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + instance = this; + getLcdIntent(); + ageingMode(); + + r1 =(RelativeLayout)findViewById(R.id.st); + r1.setBackgroundColor(BC[0]); + + WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); + layoutParams.screenBrightness = b;// b是亮度 + getWindow().setAttributes(layoutParams); + ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness); + //亮度是从0~1中的一个浮点数,由于getProess得到的是Int型,所以扩大10倍,赋值时除以10 + ScreenBrightnessSeekBar.setMax(10); + ScreenBrightnessSeekBar.setProgress(8); + ScreenBrightnessSeekBar.setOnSeekBarChangeListener(this); + + if(isShowSeekBar) { + Toast.makeText(this, /*"单击可显示亮度进度条,双击可退出"*/this.getResources().getString(R.string.lcdtest_toast),Toast.LENGTH_LONG).show(); + } else { + ScreenBrightnessSeekBar.setVisibility(View.GONE); + } + + final Handler handler = new Handler(){ + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: + if(i>8) { + r1.setBackgroundResource(BC[i]); + } else { + r1.setBackgroundColor(BC[i]); + } + + + i++; + if(i == 14) { + i = 0; + } + if(i>13){ + if (timer != null) { + timer.cancel(); + timer = null; + } + if (task != null) { + task.cancel(); + task = null; + } + finish(); + } + break; + + case 2: + ScreenBrightnessSeekBar.setVisibility(View.GONE); + break; + default: + break; + } + super.handleMessage(msg); + } + }; + task = new TimerTask() { + @Override + public void run() { + Message message = new Message(); + message.what = 1; + handler.sendMessage(message); + } + }; + seekbarTask = new TimerTask() { + @Override + public void run() { + Message message = new Message(); + message.what = 2; + handler.sendMessage(message); + } + }; + timer = new Timer(true); + timer.schedule(task, 0, 2000); + timer.schedule(seekbarTask, 10000, 2000); + + + //触摸即退出 + r1.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + ScreenBrightnessSeekBar.setVisibility(View.VISIBLE); + clickTwo(); + + } + }); + + } + + private void getLcdIntent() { + 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); + isShowSeekBar = intent.getBooleanExtra("show_seekbar", false); + } 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.postDelayed(runnable, TIME); +// sendBraodCaseReceiver(); + } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) { + TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES; + ageingHandler.postDelayed(runnable, TIME); + registerReceiver(); + } + } + + private void registerReceiver() { + receiver = new MyReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction("com.android.stopActivity"); + LCDtestAgeing.this.registerReceiver(receiver, filter); + } + + private void sendBraodCaseReceiver() { + Intent intent = new Intent(); + intent.setAction("com.android.stopTiming"); + sendBroadcast(intent); + } + + + @Override + protected void onResume() { + super.onResume(); +// powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); +// wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock"); +// if(wakeLock != null) { +// //是否需计算锁的数量 +// wakeLock.setReferenceCounted(false); +// //请求屏幕常亮,onResume()方法中执行 +// wakeLock.acquire(); +// } + } + + @Override + protected void onPause() { + super.onPause(); +// if(wakeLock != null) { +// //取消屏幕常亮,onPause()方法中执行 +// wakeLock.release(); +// wakeLock = null; +// } + } + + @Override + public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { + } + + @Override + public void onStartTrackingTouch(SeekBar arg0) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + setScreenBrightness((float)seekBar.getProgress()/10); + } + + private void setScreenBrightness(float b){ + //取得window属性保存在layoutParams中 + WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); + layoutParams.screenBrightness = b;//b已经除以10 + getWindow().setAttributes(layoutParams); + //显示修改后的亮度 + layoutParams = getWindow().getAttributes(); + } + + //实现双击 + List times = new ArrayList(); + private void clickTwo() { + times.add(SystemClock.uptimeMillis()); + if (times.size() == 2) { + if (times.get(times.size()-1)-times.get(0) < 500) { + times.clear(); + Intent intent = new Intent(LCDtestAgeing.this, + LcdJudgActivity.class); + intent.putExtra("ageing_mode", true); + startActivity(intent); + System.exit(0); + finish(); +// Toast.makeText(this, "双击方式", 0).show(); + } else { + times.remove(0); + } + } + } + + + protected void onDestroy() { + + if(ageingHandler != null && runnable != null) { + ageingHandler.removeCallbacks(runnable); + } + if (receiver != null) { + unregisterReceiver(receiver); + } + super.onDestroy(); + } + + Handler ageingHandler = new Handler(); + Runnable runnable = new Runnable() { + + @Override + public void run() { + // handler自带方法实现定时器 + try { +// handler.postDelayed(this, TIME); + System.out.println("do..."); + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(LCDtestAgeing.this,CameraPreview.class); + ageingIntent.putExtra("ageing_mode", true); + ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE); + ageingIntent.putExtra("work_time", WORK_TIME); + startActivity(ageingIntent); + } + + } catch (Exception e) { + e.printStackTrace(); + System.out.println("exception..."); + } + } + }; + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + LCDtestAgeing.this.finish(); + } + } + +} \ 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 index 0000000..553d117 --- /dev/null +++ b/app/src/main/java/mobile/miki/MikeTest.java @@ -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 index 0000000..f79d586 --- /dev/null +++ b/app/src/main/java/mobile/miki/MotorTestActivity.java @@ -0,0 +1,203 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.Vibrator; +import android.preference.PreferenceManager; +import android.view.View; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.util.FTUtils; + +public class MotorTestActivity extends BaseActivity implements android.view.View.OnClickListener{ + long[] pattern; + private Vibrator vibrator; + boolean running; + private ButtonViewTwo buttonView; + public static MotorTestActivity instance = null; + + public MotorTestActivity() { + long[] arrayOfLong = new long[4]; + arrayOfLong[0] = 700L; + arrayOfLong[1] = 1200L; + arrayOfLong[2] = 700L; + arrayOfLong[3] = 1200L; + this.pattern = arrayOfLong; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.motor_test_layout); + instance = this; + 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); + getMikeIntent(); + ageingMode(); + } + + protected void onResume() { + super.onResume(); + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); + onShakeBtnClicked(null); + } + + public void onShakeBtnClicked(View view) { + if(vibrator != null) { + vibrator.vibrate(pattern, 0x0); + return; + } + } + + @Override + protected void onPause() { + vibrator.cancel(); + super.onPause(); + } + + protected void onDestroy() { + super.onDestroy(); + } + + boolean isEgeingMode = false; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private void getMikeIntent() { + 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 { +// handler.postDelayed(this, TIME); + System.out.println("do..."); + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(MotorTestActivity.this,RingtoneActivity.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); + } + finish(); + } 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) { + finish(); + } + } + + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, UltravioletMonitorActivity.class); + if (FTUtils.isS06()) { + intent = new Intent(this, DSPActivity.class); + } + intent.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + switch (arg0.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "false") + .commit(); + finish(); + break; + } + } + + +} diff --git a/app/src/main/java/mobile/miki/MyApplication.java b/app/src/main/java/mobile/miki/MyApplication.java new file mode 100644 index 0000000..cc67f8c --- /dev/null +++ b/app/src/main/java/mobile/miki/MyApplication.java @@ -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 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(); + + } + + 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 index 0000000..1a775ee --- /dev/null +++ b/app/src/main/java/mobile/miki/PhaseCheckParse.java @@ -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 index 0000000..46119f9 --- /dev/null +++ b/app/src/main/java/mobile/miki/PictureRender.java @@ -0,0 +1,65 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PaintFlagsDrawFilter; + +class PictureRender { + private Bitmap bmCompass; + private Bitmap bmNeedle; + private Bitmap bmShadow; + private Context ctx; + PaintFlagsDrawFilter filterOff; + PaintFlagsDrawFilter filterOn; + private Paint mPaintBm; + + public PictureRender(Context paramContext, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { + ctx = paramContext; + bmNeedle = getBitmap(paramInt3); + bmCompass = getBitmap(paramInt2); + bmShadow = getBitmap(paramInt4); + mPaintBm = new Paint(); + mPaintBm.setAntiAlias(true); + mPaintBm.setDither(true); + filterOn = new PaintFlagsDrawFilter(0x0, 0x2); + filterOff = new PaintFlagsDrawFilter(0x2, 0x0); + } + + public void draw(Canvas paramCanvas, float angle, int paramInt1, int paramInt2) { + paramCanvas.translate((float)paramInt1, (float)paramInt2); + if(bmCompass != null) { + float f5 = (float)(-bmCompass.getWidth() / 0x2); + float f6 = (float)(-bmCompass.getHeight() / 0x2); + paramCanvas.drawBitmap(bmCompass, f5, f6, mPaintBm); + } + paramCanvas.setDrawFilter(filterOn); + float f1 = (float)(-bmNeedle.getWidth() / 0x2); + float f2 = (float)(-bmNeedle.getHeight() / 0x2); + paramCanvas.rotate(-angle); + paramCanvas.drawBitmap(bmNeedle, f1, f2, mPaintBm); + paramCanvas.rotate(angle); + paramCanvas.setDrawFilter(filterOff); + if(bmShadow != null) { + float f3 = (float)(-bmShadow.getWidth() / 0x2); + float f4 = (float)(-bmShadow.getHeight() / 0x2); + paramCanvas.drawBitmap(bmShadow, f3, f4, mPaintBm); + } + } + + public Bitmap getBitmap(int paramInt) { + if(paramInt <= 0) { + return null; + } + Bitmap localBitmap = null; + localBitmap = BitmapFactory.decodeResource(ctx.getResources(), paramInt); + return localBitmap; + } +} diff --git a/app/src/main/java/mobile/miki/RecordActivity.java b/app/src/main/java/mobile/miki/RecordActivity.java new file mode 100644 index 0000000..432506c --- /dev/null +++ b/app/src/main/java/mobile/miki/RecordActivity.java @@ -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 index 0000000..ec84d9c --- /dev/null +++ b/app/src/main/java/mobile/miki/RingtoneActivity.java @@ -0,0 +1,355 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; + +import java.io.IOException; + +import mobile.miki.ageingmode.AgeingModeActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; +import mobile.miki.util.Logger; + +public class RingtoneActivity extends BaseActivity implements + MediaPlayer.OnCompletionListener, android.view.View.OnClickListener/*, SeekBar.OnSeekBarChangeListener*/ { + private boolean isPlaying; + private MediaPlayer mediaPlayer; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + boolean isEgeingMode = false; + private Button mShowVolum; + + private int i = 0; + private int TIME = 1000 * 6; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private boolean isFirstStartService = true; + private boolean isShowSeekbar = true; + public static RingtoneActivity instance = null; +// private SeekBar seekBar; + int maxVolume; + AudioManager audioManager; + + public RingtoneActivity() { + isPlaying = false; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.ringtone_test_layout); + instance = this; + getRingIntent(); + ageingMode(); + + mShowVolum = (Button) findViewById(R.id.bt_showvolum); + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + onRingtoneBtnClicked(null); + /*seekBar = (SeekBar) findViewById(R.id.seekbar); + if (!FTUtils.isSugar()) { + seekBar.setVisibility(View.GONE); + } + seekBar.setOnSeekBarChangeListener(this);*/ + audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); + + Logger.d("maxVolume " + maxVolume); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,maxVolume + , AudioManager.FLAG_SHOW_UI); +// seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); + mShowVolum.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + int currentVolume = audioManager + .getStreamVolume(AudioManager.STREAM_MUSIC); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, + currentVolume, AudioManager.FLAG_SHOW_UI); + } + }); + } + + private void getRingIntent() { + Intent intent = getIntent(); + running = false; + pcbatest = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } catch (Exception e) { + e.printStackTrace(); + } + } + 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(); + } + } + + if (intent != null) { + try { + isFirstStartService = intent.getBooleanExtra("first_start_service", false); + } catch (Exception e) { + // TODO: handle exception + } + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == Constants.AGING_MODE_SETRESULT) { + + } + super.onActivityResult(requestCode, resultCode, data); + } + + /** + * 处理老化模式下的状态 + */ + private void ageingMode() { + if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 1 && WORK_TIME != -1) { + TIME = WORK_TIME * Constants.SINGLEITEM_TIMES; + handler.postDelayed(runnable, TIME); + sendBraodCaseReceiver(); + } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) { + TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES; + handler.postDelayed(runnable, TIME); + /*if(isFirstStartService && WORK_TIME != -1) { + Intent serviceIntent = new Intent(this, AgeingService.class); + serviceIntent.putExtra("work_time", WORK_TIME); + serviceIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE); + startService(serviceIntent); + }*/ + isShowSeekbar = isFirstStartService; + registerReceiver(); //注册广播 + } else { + sendBraodCaseReceiver(); + } + } + + 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"); + RingtoneActivity.this.registerReceiver(receiver, filter); + } + + protected void onDestroy() { + if (mediaPlayer != null) { + mediaPlayer.release(); + } + + if (handler != null && runnable != null) { + handler.removeCallbacks(runnable); + } + if (receiver != null) { + unregisterReceiver(receiver); + } + super.onDestroy(); + } + + + public void onRingtoneBtnClicked(View view) { + String model = Build.MODEL; + if (isPlaying) { + return; + } + if (model != null + && (model.contains("WG1702") || model.contains("PD88-18")) + || (model.contains("SCX-N18-18") || model.contains("PD88-8"))) { + mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei); + } else if (model.contains("C02A") || model.contains("C02")) { + mediaPlayer = MediaPlayer.create(this, R.raw.liebao); + } else { + mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei); + } + + if (mediaPlayer != null) { + mediaPlayer.stop(); + } + try { + mediaPlayer.setOnCompletionListener(this); + mediaPlayer.setLooping(true); + mediaPlayer.prepare(); + mediaPlayer.start(); + isPlaying = true; + return; + } catch (IllegalStateException e) { + return; + } catch (IOException e) { + } + } + + public void onCompletion(MediaPlayer mp) { + isPlaying = false; + } + + @Override + public void onClick(View arg0) { + Intent intent; + //传奇不需要mic + String model = Build.MODEL; + if(model != null && model.contains("F6")) { + intent = new Intent(this, SimDetectActivity.class); + } else { + intent = new Intent(this, MikeTest.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 (isEgeingMode) { + Intent ageingIntent = new Intent(this, AgeingModeActivity.class); + ageingIntent.putExtra("ageing_mode", true); + startActivity(ageingIntent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("ageing_speak", "true").commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("speak", "true").commit(); + } + + finish(); + break; + case R.id.btn_two_right: + if (isEgeingMode) { + Intent ageingIntent = new Intent(this, AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("ageing_speak", "false").commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("speak", "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(); + } + } + + Handler handler = new Handler(); + Runnable runnable = new Runnable() { + + @Override + public void run() { + // handler自带方法实现定时器 + try { + // handler.postDelayed(this, TIME); + System.out.println("do..."); + if (SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(RingtoneActivity.this, + LCDtestAgeing.class); + ageingIntent.putExtra("ageing_mode", true); + ageingIntent.putExtra("singleitem_or_cycle_mode", + SINGLEITEM_OR_CYCLE_MODE); + ageingIntent.putExtra("work_time", WORK_TIME); + ageingIntent.putExtra("show_seekbar", isShowSeekbar); + startActivity(ageingIntent); + } + finish(); + + } catch (Exception e) { + e.printStackTrace(); + System.out.println("exception..."); + } + } + }; + + /*@Override + public void onProgressChanged(SeekBar seekBar, int i, boolean b) { + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } +*/ + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + RingtoneActivity.this.finish(); + } + } + +} diff --git a/app/src/main/java/mobile/miki/SimDetectActivity.java b/app/src/main/java/mobile/miki/SimDetectActivity.java new file mode 100644 index 0000000..3136892 --- /dev/null +++ b/app/src/main/java/mobile/miki/SimDetectActivity.java @@ -0,0 +1,278 @@ +package mobile.miki; + +import android.app.Service; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.telephony.TelephonyManager; +import android.util.Log; +import android.view.Display; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.IOException; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class SimDetectActivity extends BaseActivity implements + android.view.View.OnClickListener { + private static String imsiSim0; + private static String imsiSim1; + private static String aaa; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + + String result = null; + private PingThread pingThread; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.sim_detect_layout); + imsiSim0 = getResources().getString(R.string.nothing); + imsiSim1 = getResources().getString(R.string.nothing); + aaa = getResources().getString(R.string.ok); + Intent intent = getIntent(); + 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); + initSimCarInfo(); + // ((TextView)findViewById(R.id.tvSim0)).setText(imsiSim0); + // ((TextView)findViewById(R.id.tvSim1)).setText(imsiSim1); + Log.e("dou", "imsiSim0:" + imsiSim0); + Log.e("dou", "imsiSim1:" + imsiSim1); + detectSim1(null); +// detectSim2(null); + detectNetwork(null); + } + + @Override + protected void onResume() { + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + super.onResume(); + } + + boolean simPass = false, networkPass = false; + + public void detectSim1(View view) { + if (null == imsiSim0) { + ((TextView) findViewById(R.id.tvSim0)).setText(R.string.nothing); + } else { + simPass = true; + if(running) { + pass(); + } + + ((TextView) findViewById(R.id.tvSim0)).setText(imsiSim0); + } + + } + + public void detectSim2(View view) { + ((TextView) findViewById(R.id.tvSim1)).setText(imsiSim1); + } + + public void detectNetwork(View view) { + ((TextView) findViewById(R.id.network)).setText(getResources().getString( + R.string.getInfo)); + if (pingThread == null) { + pingThread = new PingThread(); + pingThread.start(); + } + } + + public void intentToVoicePhone(View view) { + Intent intent = new Intent(); + intent.setComponent(new ComponentName("com.coagent.voip", + "com.coagent.voip.VOIPFragmentActivity")); + startActivity(intent); + } + + private void initSimCarInfo() { + + TelephonyManager telephonyManager = (TelephonyManager) this + .getSystemService(Context.TELEPHONY_SERVICE); + TelephonyManager tm = (TelephonyManager) this + .getSystemService(Service.TELEPHONY_SERVICE); + int state = tm.getSimState(); + if (TelephonyManager.SIM_STATE_READY == state) { + imsiSim0 = getResources().getString(R.string.sim_hasRead); + } + } + + // dou + // 判断手机是否能正常上网 进行ping操作, 即使判断手机连接了wifi了(热点没有上网),手机还是不能上网 + + Handler handler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + Log.i("dou", "handleMessage"); + if (result != null && "successful".equals(result)) { + ((TextView) findViewById(R.id.network)) + .setText(getResources().getString( + R.string.battery_info_health_good)); + networkPass = true; + if(running) { + pass(); + } + isRunning = false; + return false; + } + if (count == 5) { + isRunning = false; + ((TextView) findViewById(R.id.network)) + .setText(getResources().getString( + R.string.nothing)); + } + return false; + } + }); + + + private boolean isRunning = true; + private int count = 0; + class PingThread extends Thread { + @Override + public void run() { + + while (isRunning) { + Log.e("dou", "isRunning~~~~~~~~~"); + Log.i("dou", "count " + count); + count++; + ping(); + Message msg = new Message(); + handler.sendMessage(msg); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + super.run(); + } + } + + + @Override + protected void onDestroy() { + if (pingThread != null) { + pingThread = null; + } + if (handler != null) { + handler.removeCallbacksAndMessages(null); + } + super.onDestroy(); + } + + private boolean ping() { + try { + String ip = "www.baidu.com";// 除非百度挂了,否则用这个应该没问题~ + Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping3次 + // PING的状态 + int status = p.waitFor(); + if (status == 0) { + result = "successful"; + return true; + } else { + result = "failed~ cannot reach the IP address"; + } + } catch (IOException e) { + result = "failed~ IOException"; + } catch (InterruptedException e) { + result = "failed~ InterruptedException"; + } finally { + Log.i("dou", "result = " + result); + } + + return false; + } + + // end + + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, DialerTestActivity.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("sim", "true").commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("sim", "false").commit(); + finish(); + break; + } + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + + private void pass() { + if (simPass == true && networkPass == true) { + buttonView.setSuccessColor(); + Toast.makeText(SimDetectActivity.this, "SIM卡测试通过!", + Toast.LENGTH_SHORT).show(); + Display myDisplay = getWindowManager().getDefaultDisplay(); + + Intent intent = new Intent(this, DialerTestActivity.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest", pcbatest); + startActivity(intent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("sim", "true").commit(); + finish(); + } else { + buttonView.btn_left.setClickable(true); + } + + } + +} diff --git a/app/src/main/java/mobile/miki/SystemMemory.java b/app/src/main/java/mobile/miki/SystemMemory.java new file mode 100644 index 0000000..15af500 --- /dev/null +++ b/app/src/main/java/mobile/miki/SystemMemory.java @@ -0,0 +1,169 @@ +package mobile.miki; + +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import android.os.StatFs; +import android.preference.PreferenceManager; +import android.text.format.Formatter; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.TextView; + +import java.io.File; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.util.FTUtils; + +public class SystemMemory extends BaseActivity implements OnClickListener{ + + private TextView total_textview2; + private TextView avail_textview2; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + long totalMemory_byte = 0; + long MEMORY_2G = 2147483648l; + long MEMORY_4G = 4294967296l; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.systemmemory_test_layout); + total_textview2 = (TextView) findViewById(R.id.total_textview2); + avail_textview2 = (TextView) findViewById(R.id.avail_textview2); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + + Intent intent = getIntent(); + running = false; + pcbatest =false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } + + // 获得手机内部存储控件的状态 + File dataFileDir = Environment.getDataDirectory(); + String total = getTotal(dataFileDir); + String avail = getAvail(dataFileDir); + + if (FTUtils.isSugar() || totalMemory_byte >= MEMORY_2G && totalMemory_byte <= MEMORY_4G) { + total_textview2.setText("4G"); + findViewById(R.id.avail_textview1).setVisibility(View.GONE); + return; + } + total_textview2.setText(total); + avail_textview2.setText(avail); + + } + + + + private String getAvail(File path) { + // 获得一个磁盘状态对象 + StatFs stat = new StatFs(path.getPath()); + + long blockSize = stat.getBlockSize(); // 获得一个扇区的大小 + long totalBytes = stat.getTotalBytes(); + + long totalBlocks = stat.getBlockCount(); // 获得扇区的总数 + + long availableBlocks = stat.getAvailableBlocks(); // 获得可用的扇区数量 + // 总空间 + String totalMemory = Formatter.formatFileSize(this, totalBlocks * blockSize); + // 可用空间 + String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize); + + return availableMemory; + } + + + private String getTotal(File path) { + // 获得一个磁盘状态对象 + StatFs stat = new StatFs(path.getPath()); + + long blockSize = stat.getBlockSize(); // 获得一个扇区的大小 + + long totalBlocks = stat.getBlockCount(); // 获得扇区的总数 + + long availableBlocks = stat.getAvailableBlocks(); // 获得可用的扇区数量 + + // 总空间 + String totalMemory = Formatter.formatFileSize(this, totalBlocks * blockSize); + totalMemory_byte = totalBlocks * blockSize; + Log.i("dxc", "total kb " + totalMemory_byte); + // 可用空间 + String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize); + + return totalMemory; + } + + + + @Override + public void onClick(View arg0) { + Intent intent = null; + //正指向添加录音测试 + String model = Build.MODEL; + if(model != null && (model.contains("WG1702") || model.contains("PD88-18")) || (model.contains("SCX-N18-18") || model.contains("PD88-8") || model.contains("F6"))) { + intent = new Intent(this, RecordActivity.class); + } else if (FTUtils.isSugar() || FTUtils.isLieBao() || FTUtils.isS06()) { + intent = new Intent(this, KeysTestActivity.class); + } else if (FTUtils.isS06()){ + // s06 + intent = new Intent(this, DSPActivity.class); + } else { + intent = new Intent(this, TestMainActivity.class); + } + + intent.putExtra("running", true); + intent.putExtra("pcbatest",pcbatest); + Intent intent1 = new Intent(this, TestMainActivity.class); + + switch (arg0.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else if (FTUtils.isS06()) { + startActivity(intent); + } else { + // 自动化测试最后一项直接回到主界面 + startActivity(intent1); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("watchmemory", "true").commit(); + + finish(); + + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else if (FTUtils.isS06()) { + startActivity(intent); + } else { + startActivity(intent1); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("watchmemory", "false").commit(); + finish(); + + break; + } + + } + +} 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 index 0000000..a566c97 --- /dev/null +++ b/app/src/main/java/mobile/miki/TouchScreen_Activity.java @@ -0,0 +1,5 @@ +package mobile.miki; + +public class TouchScreen_Activity { + +} diff --git a/app/src/main/java/mobile/miki/TouchTest.java b/app/src/main/java/mobile/miki/TouchTest.java new file mode 100644 index 0000000..93d313c --- /dev/null +++ b/app/src/main/java/mobile/miki/TouchTest.java @@ -0,0 +1,264 @@ +package mobile.miki; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Paint.Style; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.Display; +import android.view.MotionEvent; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Iterator; + +import mobile.miki.lcd.LcdActivity; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +//import sim.android.mtkcit.TestActivity; +//import sim.android.mtkcit.cittools.CITTools; + + +public class TouchTest extends BaseActivity { + private static final String TAG = "TouchpanelTest"; + private static final boolean mDebug = false; + private TPTestView tpView; + private ArrayList rectList; + private static final int numX = 4; + private static final int numY = 7; + private int mDisplayWidth = 320; + private int mDisplayHeight = 320; + private int absX; + private int absY; + boolean running; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + if (mDebug) + Log.v(TAG, "start TouchpanelTest"); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + requestWindowFeature(Window.FEATURE_NO_TITLE); + // 发送广播给systemUI全屏显示 + Intent systemuiIntent = new Intent(); + systemuiIntent.setAction("mobile.miki.touchscreen.TouchScreen_Activity"); + systemuiIntent.putExtra("close", true); + sendBroadcast(systemuiIntent); + // end + initRec(); + Toast.makeText(this, /*"请进行触摸屏测试"*/this.getResources().getString(R.string.touchtest_toast), Toast.LENGTH_LONG).show(); + tpView = new TPTestView(this); + setContentView(tpView); + Intent intent = getIntent(); + running = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + } + + } + + private void initRec() { + + Display myDisplay = getWindowManager().getDefaultDisplay(); + mDisplayHeight = myDisplay.getHeight(); + mDisplayHeight = mDisplayHeight; + + + absY = mDisplayHeight / numY; + mDisplayWidth = myDisplay.getWidth(); + // mDisplayWidth = 859; + +// if(myDisplay.getWidth()==730){ +// mDisplayWidth = 855; +// }else{ +// mDisplayWidth = 1280; +// } + + + absX = mDisplayWidth / numX; + rectList = new ArrayList(numX * numY); + for (int i = 0; i < numX; i++) { + for (int j = 0; j < numY; j += (numY - 1) / 2) { + Rect r = new Rect(i * absX, j * absY, absX, absY); + + rectList.add(r); + } + } + + for (int i = 0; i < numX; i += (numX - 1) / 2) { + for (int j = 1; j < numY - 1; j++) { + if (j == (numY - 1) / 2) + continue; + + Rect r = new Rect(i * absX, j * absY, absX, absY); + + rectList.add(r); + } + } + + +// for (int i = 0; i < 2; i++) { +// for (int j = 0; j < 2; j++) { +// Rect r = new Rect(absX + i * absX * (numX - 1) / 2, absY + j * absY * (numY - 1) / 2, +// (numX - 3) / 2 * absX, (numY - 3) / 2 * absY); +// +// rectList.add(r); +// +// } +// } + } + + private void doAfterTest() { + // Bundle b = new Bundle(); + // Intent intent = new Intent(); + // b.putInt("test_result", 1); + // + // intent.putExtras(b); + // setResult(RESULT_OK, intent); + +// // 发送广播给systemUI显示bar +// Intent systemuiIntent = new Intent(); +// systemuiIntent.setAction("mobile.miki.touchscreen.TouchTest"); +// systemuiIntent.putExtra("open", true); +// sendBroadcast(systemuiIntent); + + Intent intent2 = new Intent(this, LcdActivity.class); + intent2.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + + if (!running) { + startActivity(intent1); + } else { + startActivity(intent2); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("touch", "true") + .commit(); + + finish(); + + } + + private class Rect { + int x; + int y; + int dx; + int dy; + + Rect(int x, int y, int dx, int dy) { + this.x = x; + this.y = y; + this.dx = dx; + this.dy = dy; + } + + public boolean isInRect(int x, int y) { + if (x >= this.x && x <= this.x + this.dx && y >= this.y && y <= this.y + this.dy) { + return true; + } else { + return false; + } + } + } + + private class TPTestView extends View { + private Bitmap bitmap; + private Canvas canvas; + private Paint paint; + private Rect tempRect; + + public TPTestView(Context context) { + super(context); + paint = new Paint(Paint.DITHER_FLAG); + bitmap = Bitmap.createBitmap(mDisplayWidth, mDisplayHeight, Bitmap.Config.ARGB_8888); + canvas = new Canvas(); + canvas.setBitmap(bitmap); + + paint.setStyle(Style.FILL); + paint.setStrokeWidth(5); + paint.setColor(Color.WHITE); + paint.setAntiAlias(true); + + Iterator iterator = rectList.iterator(); + while (iterator.hasNext()) { + Rect rect = iterator.next(); + canvas.drawRect(rect.x, rect.y, rect.x + rect.dx - 1, rect.y + rect.dy - 1, paint); + } + invalidate(); + + paint.setColor(Color.GREEN); + + } + + protected void onDraw(Canvas canvas) { + canvas.drawBitmap(bitmap, 0, 0, null); + } + + public boolean onTouchEvent(MotionEvent event) { + int action = event.getAction(); + float x = event.getX(); + float y = event.getY(); + if (mDebug) + Log.v(TAG, "onTouchEvent" + " x=" + x + " y=" + y); + + if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE) { + if (rectList.size() == 0) { + doAfterTest(); + } + boolean bNeedFindRect = false; + if (tempRect == null) { + bNeedFindRect = true; + } else { + if (!tempRect.isInRect((int) x, (int) y)) { + bNeedFindRect = true; + } else { + bNeedFindRect = false; + } + + } + if (mDebug) + Log.v(TAG, "onTouchEvent" + " bNeedFindRect=" + bNeedFindRect); + if (bNeedFindRect) { + Iterator iterator = rectList.iterator(); + while (iterator.hasNext()) { + Rect rect = iterator.next(); + if (rect.isInRect((int) x, (int) y)) { + tempRect = rect; + canvas.drawRect(rect.x, rect.y, rect.x + rect.dx, rect.y + rect.dy, paint); + invalidate(); + rectList.remove(rect); + break; + } + } + } + } + return true; + } + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("touch", "false") + .commit(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + // doAfterTest(); + } else { + finish(); + } + + } + +} diff --git a/app/src/main/java/mobile/miki/UltravioletMonitorActivity.java b/app/src/main/java/mobile/miki/UltravioletMonitorActivity.java new file mode 100644 index 0000000..1e90687 --- /dev/null +++ b/app/src/main/java/mobile/miki/UltravioletMonitorActivity.java @@ -0,0 +1,151 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.Intent; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import java.util.List; + +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +/** + * 紫外线检测 + */ +public class UltravioletMonitorActivity extends BaseActivity + implements SensorEventListener, View.OnClickListener { + private SensorManager sensorManager; + String s1; + TextView t1; + private ButtonViewTwo buttonView; + boolean running; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + s1 = getString(R.string.ins_gsensor_toast); + setContentView(R.layout.gravity_sensor_layout); + 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); + + LinearLayout sensor_direction = (LinearLayout) findViewById(R.id.sensor_direction); + sensor_direction.setVisibility(View.GONE); + t1 = (TextView) findViewById(R.id.ins); + t1.setText(R.string.getInfo); + sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); + sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), 0x0); + List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); + for (Sensor sensor : sensors) { + Log.i("dxc", "sensor:[name=" + sensor.getName() + + ";type=" + sensor.getType() + + ";vendor=" + sensor.getVendor() + "]"); + } + handler.sendEmptyMessageDelayed(0, 500); + myHandler.sendEmptyMessageDelayed(1, 1000 * 60 * 2); + } + + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + + public void onSensorChanged(SensorEvent event) { + if(event.values[0] > 0) { + t1.setText(R.string.pass_test); + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + if (running) { + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Ultraviolet", "true") + .commit(); + Intent intent = new Intent(this, TestMainActivity.class); + intent.putExtra("running", true); + startActivity(intent); + } + Log.i("dxc", "onSensorChanged " + (int) event.values[0]); + sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)); + } + } + + protected void onDestroy() { + sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)); + sensorManager = null; + super.onDestroy(); + } + + + @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("Ultraviolet", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("Ultraviolet", "false") + .commit(); + finish(); + break; + } + } + + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + + private Handler myHandler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + if (message.what == 1) { + t1.setText(R.string.fail_test); + } + + return false; + } + }); +} diff --git a/app/src/main/java/mobile/miki/VUMeter.java b/app/src/main/java/mobile/miki/VUMeter.java new file mode 100644 index 0000000..30601d2 --- /dev/null +++ b/app/src/main/java/mobile/miki/VUMeter.java @@ -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 index 0000000..e09fa89 --- /dev/null +++ b/app/src/main/java/mobile/miki/VersionActivity.java @@ -0,0 +1,317 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Build; +import android.os.Bundle; +import android.os.SystemProperties; +import android.preference.PreferenceManager; +import android.telephony.TelephonyManager; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +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 mobile.miki.util.IATUtils; + +public class VersionActivity extends BaseActivity implements android.view.View.OnClickListener { + private static final String TAG = "VersionActivity"; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + TextView rfParametersValue; //校准状态 + String imeiValue = ""; + String barCode = ""; + LinearLayout ll_imei2; + private TextView simidParametersValue, cidParameters, cidParametersValue; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.version_layout); + Intent intent = getIntent(); + running = false; + pcbatest = false; + if (intent != null) { + running = intent.getBooleanExtra("running", false); + pcbatest = intent.getBooleanExtra("pcbatest",false); + } + + rfParametersValue = (TextView) findViewById(R.id.rfParametersValue); + ll_imei2 = ((LinearLayout) findViewById(R.id.ll_imei2)); + ll_imei2.setVisibility(View.GONE); + //版本号 + ((TextView) findViewById(R.id.tvBuildNumberValue)).setText(Build.DISPLAY); + //SIM卡 ICCID + simidParametersValue = (TextView) findViewById(R.id.SimidParametersValue); + setICCID(); + setImei(); + + cidParameters = (TextView)findViewById(R.id.cidParameters); + cidParametersValue = (TextView) findViewById(R.id.cidParametersValue); + barCode = SystemProperties.get("gsm.serial", ""); + Log.i(TAG, "barCode " + barCode); + //写入cid号 + String cidValue = ""; + Log.i(TAG, "ro.product.brand" + SystemProperties.get("ro.product.brand","")); + if("sprd".equalsIgnoreCase(SystemProperties.get("ro.product.brand",""))){ + cidValue = FTUtils.GetCidFromSystem(); + }else{ + cidValue = getSerialNumber(barCode); + } + cidParameters.setText(getResources().getString(R.string.cid)); + // 校准 + setRF(); + + // 糖果cid地址指向serialno位置 + if (FTUtils.isSugar()) { + ((TextView) findViewById(R.id.barcode)).setText(barCode); + cidParametersValue.setText(Build.SERIAL); + ((TextView) findViewById(R.id.wifi_mac_address)).setText(FTUtils.getWifiMacAddress()); + ((TextView) findViewById(R.id.bluethooth_mac_address)).setText(FTUtils.getBtAddressViaReflection()); + } else { + cidParametersValue.setText(cidValue); + ((LinearLayout) findViewById(R.id.ll_wifi_mac_address)).setVisibility(View.GONE); + ((LinearLayout) findViewById(R.id.ll_bluethooth_mac_address)).setVisibility(View.GONE); + ((LinearLayout) findViewById(R.id.ll_barcode)).setVisibility(View.GONE); + } + + // 展讯获取校准标准 + if (FTUtils.isLieBao() || SystemProperties.get("ro.product.brand", "").equalsIgnoreCase("SPRD")) { + getZhanXunRf(); + String zhanxunCid = FTUtils.GetCidFromSystem(); + cidParameters.setVisibility(View.GONE); + cidParametersValue.setText(zhanxunCid); + } + // end + getDisplayMetrics(); + + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_left.setClickable(false); + + registerBroadCast(); + } + + private void setImei() { + // imei + TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); + if (Build.VERSION.SDK_INT < 26) { + imeiValue = telephonyManager.getDeviceId(); + } else { + imeiValue = FTUtils.getImei(this); + } + ((TextView) findViewById(R.id.tv_imei)).setText(imeiValue + ""); + + // imei2 + String imei2 = SystemProperties.get("gsm.mtk.imei2", ""); + //酷达需要imei2 + String android_model = Build.MODEL; + if (android_model.contains("CMCC-CW1A")) { + if (imei2 != null) { + ll_imei2.setVisibility(View.VISIBLE); + ((TextView) findViewById(R.id.imeiParametersValue)).setText(imei2); + } + } + } + + + private void setRF() { + if (barCode.length() == 0 || barCode == null) {//值为空,未校准 + rfParametersValue.setText(R.string.no); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "false") + .commit(); +// } else if (strVal.length()>=62 && "10".equals(strVal.substring(60, 62))) {//值不为空且后面等于10,校准 + } else if (barCode.length() >= 62 && barCode.substring(barCode.length() - 10, barCode.length()).contains("10")) { + rfParametersValue.setText(getResources().getString(R.string.yes)); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "true") + .commit(); + } else {//值不为空,后面不等于10,未校准 + rfParametersValue.setText(getResources().getString(R.string._fail)); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("rf", "false") + .commit(); + } + } + + private void setICCID() { + if ("".equals(getSimId()) || getSimId() == null) { + simidParametersValue.setText("null"); + } else { + simidParametersValue.setText(getSimId()); + } + } + + //获取屏幕分辨率 + private void getDisplayMetrics() { + DisplayMetrics dm = new DisplayMetrics(); + this.getWindowManager().getDefaultDisplay().getMetrics(dm); + int screenWidth = dm.widthPixels; + int screenHeight = dm.heightPixels; + ((TextView) findViewById(R.id.screenResolutionParametersValue)).setText(screenWidth + "*" + screenHeight); + } + + public static String getSerialNumber(String serial) { + try { + if (serial != null) { + serial = serial.replaceAll("\\s*", "");//去掉空白字符 + if (serial.length() >= 16) { + serial = serial.substring(0, 16); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return serial; + } + + + public String getSimId() { + TelephonyManager telephonyManager = (TelephonyManager) this + .getSystemService(Context.TELEPHONY_SERVICE); + + String simSerialNumber = telephonyManager.getSimSerialNumber(); + + return simSerialNumber; + } + + @Override + public void onClick(View arg0) { + Intent intent ; + if (pcbatest) { + intent = new Intent(this, CameraPreview.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest", true); + }else{ + intent = new Intent(this, TouchTest.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest",false); + } + + 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("version", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("version", "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(); + } + } + + private void registerBroadCast() { + IntentFilter filter1 = new IntentFilter(); + filter1.addAction("android.intent.action.SIM_STATE_CHANGED"); + registerReceiver(getSimState, filter1); + } + + // 广播 + private BroadcastReceiver getSimState = new BroadcastReceiver() { + @Override + public void onReceive(Context arg0, Intent arg1) { + String action = arg1.getAction(); + if (action.equals("android.intent.action.SIM_STATE_CHANGED")) { + if ("".equals(getSimId()) || getSimId() == null) { + simidParametersValue.setText("null"); + } else { + simidParametersValue.setText(getSimId()); + } + } + + } + }; + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(getSimState); + } + + private String str = "loading..."; + + private void getZhanXunRf() { + str = "GSM "; + str += IATUtils.sendATCmd("AT+SGMR=0,0,3,0", "atchannel0"); + sleep(100); + str += "WCDMA "; + str += IATUtils.sendATCmd("AT+SGMR=0,0,3,1", "atchannel0"); + sleep(100); + str += "LTE "; + str += IATUtils.sendATCmd("AT+SGMR=1,0,3,3", "atchannel0"); + sleep(100); + Log.i(TAG, "str " + str); + boolean rfSuccess = isRfSuccess(str); + if (rfSuccess) { + rfParametersValue.setText(getResources().getString(R.string.yes)); + } else { + rfParametersValue.setText(getResources().getString(R.string._fail)); + } + Log.i(TAG, "rfSuccess " + rfSuccess); + } + + private void sleep(long time) { + try { + Thread.sleep(time); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + private boolean isRfSuccess(String str) { + if (str.contains("BIT2:DCS AGC calibrated Pass") && str.contains("BIT3:DCS APC calibrated Pass") + && str.contains("BIT4:EGSM AGC calibrated Pass") && str.contains("BIT5:EGSM APC calibrated Pass") + && str.contains("BIT8:GSM AFC calibrated Pass") && str.contains("BIT20:EDGE Calibration Pass") + && str.contains("BIT1:TDD LTE AGC Pass") && str.contains("BIT2:TDD LTE APC Pass")) { + return true; + } + return false; + } + +} \ 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 index 0000000..636931c --- /dev/null +++ b/app/src/main/java/mobile/miki/WifiTestActiviy.java @@ -0,0 +1,256 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki; + +import android.app.ProgressDialog; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.wifi.ScanResult; +import android.net.wifi.WifiManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import mobile.miki.adapter.ListViewAdapter; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class WifiTestActiviy extends BaseActivity implements android.view.View.OnClickListener { + private ProgressDialog dialogBar; + private ListView listView; + private ArrayList> listViewData; + private WifiManager mainWifi; + private HashMap map; + private WifiTestActiviy.WifiReceiver receiverWifi; + TextView tvState,mac; + private String wifiHot; + private List wifiList; + private int wifiState; + private ButtonViewTwo buttonView; + boolean running; + boolean pcbatest; + public WifiTestActiviy() { + listViewData = new ArrayList(); + map = null; + wifiHot = null; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.wifi_test_layout); + Intent intent = getIntent(); + 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); + mac=(TextView) findViewById(R.id.textView1); + this.tvState = ((TextView) findViewById(R.id.tvState)); + this.mainWifi = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE)); + this.receiverWifi = new WifiReceiver(); + IntentFilter localIntentFilter = new IntentFilter("android.net.wifi.SCAN_RESULTS"); + registerReceiver(this.receiverWifi, localIntentFilter); + this.listView = ((ListView) findViewById(R.id.lvDevice)); + ArrayList localArrayList = this.listViewData; + String[] arrayOfString = new String[2]; + arrayOfString[0] = ListViewAdapter.NAME; + arrayOfString[1] = ListViewAdapter.DESCRIBE; + int[] arrayOfInt = new int[2]; + arrayOfInt[0] = 2131296343; + arrayOfInt[1] = 2131296344; + ListViewAdapter localListViewAdapter = new ListViewAdapter(this, localArrayList, R.layout.list_item, arrayOfString, + arrayOfInt); + this.listView.setAdapter(localListViewAdapter); + this.dialogBar = new ProgressDialog(this); + this.dialogBar.setMax(100); + this.dialogBar.setProgress(0); + this.dialogBar.incrementProgressBy(1); + this.dialogBar.setMessage(getResources().getString(R.string.wfScaning)); + this.dialogBar.setProgressStyle(0); + wifiScan(null); + } + + + public boolean openWifi(View view) { + if (mainWifi == null) { + tvState.setText(getResources().getString(R.string.noSuportWifi)); + return false; + } + if (mainWifi.isWifiEnabled()) { + tvState.setText(getResources().getString(R.string.wifiOpen)); + return true; + } + tvState.setText(getResources().getString(R.string.wifiOpening)); + mainWifi.setWifiEnabled(true); + wifiState = mainWifi.getWifiState(); + if (wifiState == 0x3) { + tvState.setText(getResources().getString(R.string.wifiOpen)); + tvState.setText(getResources().getString(R.string.scanBegin)); + dialogBar.show(); + mainWifi.startScan(); + return true; + } + if (wifiState == 0x4) { + tvState.setText(getResources().getString(R.string.openWififail)); + return false; + } + return false; + } + + public void wifiScan(View view) { + if (openWifi(null)) { + tvState.setText(getResources().getString(R.string.scanBegin)); + dialogBar.show(); + mainWifi.startScan(); + } + } + + protected void onDestroy() { + unregisterReceiver(receiverWifi); + if (mainWifi != null) { + mainWifi.setWifiEnabled(false); + } + super.onDestroy(); + } + + protected void onResume() { + registerReceiver(receiverWifi, new IntentFilter("android.net.wifi.SCAN_RESULTS")); + super.onResume(); + } + + + class WifiReceiver extends BroadcastReceiver { + + public void onReceive(Context c, Intent intent) { + wifiList = mainWifi.getScanResults(); + if (wifiList.size() == 0) { + tvState.setText(getResources().getString(R.string.foundNoHot)); + } else { + tvState.setText( + getResources().getString(R.string.found) + wifiList.size() + getResources().getString(R.string.grd)); + ((ListViewAdapter) listView.getAdapter()).removeAll(); + + pass(); + try { + mac.setText(getResources().getString(R.string.mac_new)+getWifiMacAddress());//mac地址 + } catch (Exception e) { + } + + } + for (int i = 0x0; i < wifiList.size(); i++) { + wifiHot = ((ScanResult) wifiList.get(i)).toString(); + // ListAdapter localListAdapter1 = this$0new HashMap(); + WifiTestActiviy.this.map = new HashMap(); + WifiTestActiviy.this.map.put(ListViewAdapter.NAME, wifiHot.subSequence(0x0, wifiHot.indexOf(","))); +// WifiTestActiviy.this.map.put(ListViewAdapter.DESCRIBE, +// wifiHot.subSequence((wifiHot.indexOf(",") + 0x1), wifiHot.length())); + ((ListViewAdapter) listView.getAdapter()).add(map); + } + dialogBar.dismiss(); + } + } + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, GpsTest.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("wifi", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("wifi", "false") + .commit(); + finish(); + break; + } + } + + public void pass() { + Toast.makeText(getApplicationContext(), getResources().getString(R.string.ins_gsensor_toast), + Toast.LENGTH_SHORT).show(); + buttonView.setSuccessColor(); + + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("wifi", "true") + .commit(); + if (running) { + new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 0: + Intent intent = new Intent(WifiTestActiviy.this, GpsTest.class); + intent.putExtra("running", true); + intent.putExtra("pcbatest",pcbatest); + startActivity(intent); + WifiTestActiviy.this.finish(); + break; + + default: + break; + } + } + + }.sendEmptyMessageDelayed(0, 1000); + }else{ + buttonView.btn_left.setClickable(true); + } + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + + private String getWifiMacAddress() { + WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); + String macAddress = wifiManager.getConnectionInfo().getMacAddress(); + return macAddress; + } + +} 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 index 0000000..92da73c --- /dev/null +++ b/app/src/main/java/mobile/miki/adapter/AgeingListAdapter.java @@ -0,0 +1,53 @@ +package mobile.miki.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import java.util.List; + +import mobile.miki.R; + +public class AgeingListAdapter extends BaseAdapter { + private Context mContext; + private List list; + private String[] stateArr; + + public AgeingListAdapter(Context context, List list, String[] stateArr) { + mContext = context; + this.list = list; + this.stateArr = stateArr; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return 0; + } + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater mInflater = LayoutInflater.from(mContext); + convertView = mInflater.inflate(R.layout.testmain_adapter, null); + TextView text = (TextView) convertView.findViewById(R.id.text_item); + text.setText(list.get(position)); + + return convertView; + } + + private String getString(int stringId) { + return mContext.getResources().getString(stringId); + } + +} 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 index 0000000..63aac26 --- /dev/null +++ b/app/src/main/java/mobile/miki/adapter/ListViewAdapter.java @@ -0,0 +1,75 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.adapter; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.SimpleAdapter; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import mobile.miki.R; + +public class ListViewAdapter extends SimpleAdapter { + public static String NAME = "name"; + public static String DESCRIBE = "describe"; + //private ArrayList> listData = new ArrayList>(); + private ArrayList> listData = new ArrayList(); + + public ListViewAdapter(Context context, List> data, int resource, String[] from, int[] to) { + super(context, data, resource, from, to); + listData = (ArrayList)data; + } + + public View getView(int position, View convertView, ViewGroup parent) { + View view = super.getView(position, convertView, parent); + Map map = (Map)getListData().get(position); + ((TextView)view.findViewById(R.id.name)).setText((CharSequence)map.get(NAME)); + ((TextView)view.findViewById(R.id.describe)).setText((CharSequence)map.get(DESCRIBE)); + return view; + } + + public ArrayList getListData() { + return listData; + } + + public void setListData(ArrayList> listData) { + this.listData = listData; + } + + public void removeAll() { + listData.clear(); + notifyDataSetChanged(); + } + + public void remove(int index) { + if((index < 0) || (index > (listData.size() - 0x1))) { + return; + } + Log.i(getClass().getName(), index + "//" + listData.size()); + listData.remove(index); + notifyDataSetChanged(); + } + + public void add(HashMap item) { + boolean isContain = false; + for(HashMap data : listData) { + if(String.valueOf(data.get(NAME)).equalsIgnoreCase(String.valueOf(item.get(NAME)))) { + isContain = true; + } + } + if(!isContain) { + listData.add(item); + } + notifyDataSetChanged(); + } +} 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 index 0000000..7a4379a --- /dev/null +++ b/app/src/main/java/mobile/miki/adapter/TestMainListAdapter.java @@ -0,0 +1,57 @@ +package mobile.miki.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import java.util.List; + +import mobile.miki.R; + +public class TestMainListAdapter extends BaseAdapter { + private Context mContext; + private List list; + private String[] stateArr; + + public TestMainListAdapter(Context context, List list, String[] stateArr) { + mContext = context; + this.list = list; + this.stateArr = stateArr; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int i) { + return list.get(i); + } + + @Override + public long getItemId(int i) { + return 0; + } + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater mInflater = LayoutInflater.from(mContext); + convertView = mInflater.inflate(R.layout.testmain_adapter, null); + TextView text = (TextView) convertView.findViewById(R.id.text_item); + text.setText(list.get(position)); + if (stateArr[position].equals("true")) { + convertView.setBackgroundResource(R.drawable.button_common_green_bg); + } else if (stateArr[position].equals("false")) { + convertView.setBackgroundResource(R.drawable.button_common_red_bg); + } + return convertView; + } + + private String getString(int stringId) { + return mContext.getResources().getString(stringId); + } + +} 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 index 0000000..8d3e95f --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingBaseActivity.java @@ -0,0 +1,123 @@ +package mobile.miki.ageingmode; + +import android.app.Activity; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.util.Log; + +import mobile.miki.R; +import mobile.miki.util.FTUtils; + +public class AgeingBaseActivity extends Activity { + private static final String TAG = "BaseActivity"; + private WakeLock wakeLock = null; + private PowerManager powerManager = null; + int SINGLEITEM_OR_CYCLE_MODE; + int WORK_TIME; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); +// wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "FactoryMode"); + IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + registerReceiver(homePressReceiver, homeFilter); + /*if(wakeLock != null) { + //是否需计算锁的数量 + wakeLock.setReferenceCounted(false); + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); +// handler.postDelayed(runnable, 1000 * 60 * 30); //30分钟不灭屏 + + }*/ + _getIntent(); + calcTime(); + } + + private void _getIntent() { + try { + Intent intent = getIntent(); + WORK_TIME = intent.getIntExtra("work_time", 0); + SINGLEITEM_OR_CYCLE_MODE = intent.getIntExtra("singleitem_or_cycle_mode", 0); + }catch (Exception e) { + + } + + } + + private void calcTime() { + long beforeTime = FTUtils.GetPreferences(this, R.string.currentTime); + int afterTime = FTUtils.GetAgeingWorktimePreferences(this, R.string.workTime); + if (WORK_TIME == -1 && SINGLEITEM_OR_CYCLE_MODE == 1) { + return; + } else if (WORK_TIME == -1 && SINGLEITEM_OR_CYCLE_MODE == 2) { + afterTime = 1000 * 60 * 60 * 5000; + } + Log.i("dxc", "calcTime " + (System.currentTimeMillis() - beforeTime) + " afterTime " + afterTime); + if (System.currentTimeMillis() - beforeTime > afterTime) { // 100小时 + Log.i("dxc", "calcTime finish"); + finish(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + if(handler != null) { + handler.removeCallbacks(runnable); + } + + if (homePressReceiver != null) { + unregisterReceiver(homePressReceiver); + } + } + + Handler handler=new Handler(); + Runnable runnable=new Runnable() { + @Override + public void run() { + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + + } + }; + + + //HOME键监听 + private BroadcastReceiver homePressReceiver = new BroadcastReceiver() { + final String SYSTEM_DIALOG_REASON_KEY = "reason"; + final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; + @Override + public void onReceive(Context context, Intent intent) { + // TODO Auto-generated method stub + String action = intent.getAction(); + if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){ + String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); + if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){ + if(handler != null) { + handler.removeCallbacks(runnable); + } + if(wakeLock != null) { + //取消屏幕常亮,onPause()方法中执行 + wakeLock.release(); + wakeLock = null; + } + } + } + } + }; +} 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 index 0000000..537ca09 --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingCameraPreview.java @@ -0,0 +1,466 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.ageingmode; + +import android.app.Activity; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.hardware.Camera; +import android.os.Build; +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.Surface; +import android.view.SurfaceHolder; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.Toast; + +import java.lang.ref.WeakReference; + +import mobile.miki.CameraSurfaceView; +import mobile.miki.Constants; +import mobile.miki.R; +import mobile.miki.WifiTestActiviy; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; + +public class AgeingCameraPreview extends AgeingBaseActivity implements SurfaceHolder.Callback, OnClickListener { + private static final String TAG = "AgeingCameraPreview"; + private Camera camera = null; + Handler handler; + Button bt; + private SurfaceHolder holder; + private boolean isAutoFocus; + private float mAspectRatio; + private int mH; + private int mHorizontalTileSize; + private int mPrvH; + private int mPrvW; + private int mVerticalTileSize; + private int mW; + private CameraSurfaceView preview; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private MyHandler ageingHandler; + + public AgeingCameraPreview() { + mHorizontalTileSize = 16; + mVerticalTileSize = 16; + mAspectRatio = 1.0f; + //设置camera宽,高 + mPrvH = 360; + mPrvW = 360; + isAutoFocus = true; + handler = new Handler( ) { + + public void handleMessage(Message msg) { + if(camera != null) { + camera.autoFocus(null); + } + } + }; + } + +// static { +// System.loadLibrary("ftmjni"); +// } + private ButtonViewTwo buttonView; + boolean running; + boolean isEgeingMode = false; + private PowerManager powerManager = null; + private WakeLock wakeLock = null; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(0x1); + setContentView(R.layout.camera_preview_layout); + sendBraodCaseReceiver(); + registerReceiver(); + ageingHandler = new MyHandler(this); + bt = (Button)findViewById(R.id.isZoom); + Log.i("AgeingCameraPreview", "platform:" + getString(R.string.project)); + + 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); + + init(); + ageingMode(); + } + + + private void init() { + try { + camera = Camera.open(0); + } catch (Exception e) { + Toast.makeText(AgeingCameraPreview.this, "resume_cameraError", Toast.LENGTH_LONG).show(); + } + preview = (CameraSurfaceView)findViewById(R.id.camera_preview); + preview.setAspectRatio(mPrvW, mPrvH); + holder = preview.getHolder(); + holder.addCallback(this); + holder.setType(0x3); + + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + + getCameraIntent(); + if(isEgeingMode) { + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); + wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingCamera"); + if(wakeLock != null) { + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); + } + + } + + } + + /** + * 处理老化模式的状态 + */ + 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.stopLCDActivity"); + sendBroadcast(intent); + } + + private void registerReceiver() { + receiver = new MyReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction("com.android.stopCameraActivity"); + AgeingCameraPreview.this.registerReceiver(receiver, filter); + } + + private void getCameraIntent() { + Intent intent = getIntent(); + running = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + } catch (Exception e) { + e.printStackTrace(); + } + + } + 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(); + } + } + } + + protected void onResume() { + super.onResume(); + + + } + + + + @Override + protected void onPause() { + super.onPause(); + + + } + + private int roundUpToTile(int dimension, int tileSize, int maxDimension) { + return Math.min(((((dimension + tileSize) - 0x1) / tileSize) * tileSize), maxDimension); + } + + protected void onDestroy() { + if(camera != null) { + camera.release(); + camera = null; + } + + if(wakeLock != null) { + wakeLock.release(); + wakeLock = null; + } + + isAutoFocus = false; + stopLoop(null); + + if(ageingHandler != null) { + ageingHandler.removeCallbacksAndMessages(null); + ageingHandler = null; + } + if (receiver != null) { + unregisterReceiver(receiver); + } + + if(handler != null) { + handler.removeCallbacksAndMessages(handler.obtainMessage()); + } + super.onDestroy(); + } + + public void pullClose(View view) { + if(camera.getParameters().isZoomSupported()) { + camera.getParameters().setZoom(0x0); + } + } + + public void pullFar(View view) { + if(camera.getParameters().isZoomSupported()) { + camera.getParameters().setZoom(camera.getParameters().getMaxZoom()); + } + } + + /* public void pullLoop(View view) { + isAutoFocus = true; + new AgeingCameraPreview.AutoFocus( ).start(); + if(camera.getParameters().isZoomSupported()) { + bt.setText(getString(R.string.isZoom_y)); + bt.setTextColor(Color.GREEN); + bt.setBackgroundColor(0xFFDEAD); + bt.setVisibility(View.VISIBLE); + }else{ + bt.setText(getString(R.string.isZoom_n)); + bt.setBackgroundColor(0xFFDEAD); + bt.setTextColor(Color.RED); + bt.setVisibility(View.VISIBLE); + } + + }*/ + + public void stopLoop(View view) { + isAutoFocus = false; + } + + class AutoFocus extends Thread { + + public void run() { + while(isAutoFocus) { + Log.i("AgeingCameraPreview", "autoFocus"); + try { + handler.sendMessage(handler.obtainMessage()); + sleep(0xbb8); + continue; + } catch(InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + public void surfaceCreated(SurfaceHolder holder) { + + try { + ///参数0为主摄像头。不加参数camera可能会为空 +// camera = Camera.open(0); + if(camera != null) { + camera.setPreviewDisplay(holder); + setCameraDirection(); + camera.startPreview(); + return; + } + + } catch(Exception exception) { + exception.printStackTrace(); + String model = Build.MODEL; + if(!model.equals("F6")){ //传奇报错 + Toast.makeText(AgeingCameraPreview.this, "cameraError", Toast.LENGTH_LONG).show(); + if(camera != null) { + camera.release(); + camera = null; + } + } + } + } + + public void surfaceDestroyed(SurfaceHolder holder) { + if(camera != null) { + camera.stopPreview(); + camera.setPreviewCallback(null); + camera.release(); + camera = null; + } + } + + public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { + try { + Camera.Parameters parameters = camera.getParameters(); + parameters.setPictureFormat(0x100); + parameters.setFlashMode("on"); + parameters.setPictureSize(w, h); + parameters.setPreviewSize(w, h); + camera.setParameters(parameters); + camera.startPreview(); + return; + } catch(Exception localException1) { + } + } + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, WifiTestActiviy.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(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "true") + .commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "true") + .commit(); + } + if(camera != null) { + camera.release(); + camera = null; + } + finish(); + break; + case R.id.btn_two_right: + if(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_camera", "false") + .commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("camera", "false") + .commit(); + } + if(camera != null) { + camera.release(); + camera = null; + } + finish(); + break; + } + + } + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + AgeingCameraPreview.this.finish(); + } + } + + private void setCameraDirection() { + Camera.CameraInfo info = new Camera.CameraInfo(); + Camera.getCameraInfo(0, info); + WindowManager mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); + int rotation = mWindowManager.getDefaultDisplay().getRotation(); + int degrees = 0; + switch (rotation) { + case Surface.ROTATION_0: + degrees = 0; + break; + case Surface.ROTATION_90: + degrees = 90; + break; + case Surface.ROTATION_180: + degrees = 180; + break; + case Surface.ROTATION_270: + degrees = 270; + break; + } + + int result; + if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { + result = (info.orientation + degrees) % 360; + result = (360 - result) % 360; // compensate the mirror + } else { // back-facing + result = (info.orientation - degrees + 360) % 360; + } + Log.i("dxc", "result " + result); + camera.setDisplayOrientation(result); + } + + class MyHandler extends Handler { + WeakReference mActivityReference; + + MyHandler(Activity activity) { + mActivityReference= new WeakReference(activity); + } + @Override + public void handleMessage(Message msg) { + final Activity activity = mActivityReference.get(); + if (activity != null) { + try { +// handler.postDelayed(this, TIME); + System.out.println("do..."); + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(AgeingCameraPreview.this,AgeingMikeTest.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..."); + } + } + } + } +} 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 index 0000000..6479ef6 --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingLCDtest.java @@ -0,0 +1,217 @@ +package mobile.miki.ageingmode; + +import android.app.Activity; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.PowerManager; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.RelativeLayout; +import android.widget.SeekBar; + +import java.lang.ref.WeakReference; + +import mobile.miki.Constants; +import mobile.miki.R; + +public class AgeingLCDtest extends AgeingBaseActivity{ + public int[] BC =null; + RelativeLayout r1; + int i = 0; + int b ; + private SeekBar ScreenBrightnessSeekBar; + boolean isEgeingMode = false; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private boolean isShowSeekBar = true; + int[] bkcolor; + private MyHandler ageingHandler; + private PowerManager powerManager = null; + private PowerManager.WakeLock wakeLock = null; + + private void initRGB() { + int[] bkcolor = new int[14]; + bkcolor[0] = Color.RED; + bkcolor[1] = Color.BLUE; + bkcolor[2] = Color.YELLOW; + bkcolor[3] = Color.GREEN; + bkcolor[4] = Color.WHITE; + bkcolor[5] = Color.CYAN; + bkcolor[6] = Color.MAGENTA; + BC =bkcolor; + } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + //全屏 + getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , + WindowManager.LayoutParams. FLAG_FULLSCREEN); + setContentView(R.layout.activity_main); + sendBraodCaseReceiver();; + registerReceiver(); + initRGB(); + ageingHandler = new MyHandler(this); + ageingHandler.sendEmptyMessage(2); + getLcdIntent(); + ageingMode(); + r1 =(RelativeLayout)findViewById(R.id.st); + r1.setBackgroundColor(BC[0]); + + WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); + layoutParams.screenBrightness = b;// b是亮度 + getWindow().setAttributes(layoutParams); + ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness); + ScreenBrightnessSeekBar.setVisibility(View.GONE); + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); + wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingLCD"); + if(wakeLock != null) { + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); + } + } + + + private void getLcdIntent() { + 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); + isShowSeekBar = intent.getBooleanExtra("show_seekbar", false); + } 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(); + } + } + + private void registerReceiver() { + receiver = new MyReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction("com.android.stopLCDActivity"); + AgeingLCDtest.this.registerReceiver(receiver, filter); + } + + private void sendBraodCaseReceiver() { + Intent intent = new Intent(); + intent.setAction("com.android.stopRingActivity"); + sendBroadcast(intent); + } + + + @Override + protected void onResume() { + super.onResume(); +// powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); +// wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock"); +// if(wakeLock != null) { +// //是否需计算锁的数量 +// wakeLock.setReferenceCounted(false); +// //请求屏幕常亮,onResume()方法中执行 +// wakeLock.acquire(); +// } + } + + @Override + protected void onPause() { + super.onPause(); + } + + + + protected void onDestroy() { + + if(ageingHandler != null) { + ageingHandler.removeCallbacksAndMessages(null); + ageingHandler = null; + } + if (receiver != null) { + unregisterReceiver(receiver); + } + if(wakeLock != null) { + wakeLock.release(); + wakeLock = null; + } + super.onDestroy(); + } + + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + AgeingLCDtest.this.finish(); + } + } + + private class MyHandler extends Handler { + WeakReference mActivityReference; + + MyHandler(Activity activity) { + mActivityReference= new WeakReference(activity); + } + @Override + public void handleMessage(Message msg) { + final Activity activity = mActivityReference.get(); + if (activity != null) { + if (msg.what == 1) { + try { + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(activity,AgeingCameraPreview.class); + ageingIntent.putExtra("ageing_mode", true); + ageingIntent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE); + ageingIntent.putExtra("work_time", WORK_TIME); + activity.startActivity(ageingIntent); + } else { + activity.finish(); + } + } catch (Exception e) { + e.printStackTrace(); + System.out.println("exception..."); + } + } else if (msg.what == 2) { + r1.setBackgroundColor(BC[i]); + i++; + if(i == 6) { + i = 0; + } + ageingHandler.sendEmptyMessageDelayed(2, 2000); + } + } + } + } +} \ 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 index 0000000..23bc79b --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingMikeTest.java @@ -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 mActivityReference; + + MyHandler(Activity activity) { + mActivityReference= new WeakReference(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 index 0000000..4194f83 --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingModeActivity.java @@ -0,0 +1,161 @@ +package mobile.miki.ageingmode; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.GridView; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RadioGroup.OnCheckedChangeListener; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; + +import mobile.miki.BaseActivity; +import mobile.miki.R; +import mobile.miki.adapter.AgeingListAdapter; +import mobile.miki.util.FTUtils; + +public class AgeingModeActivity extends BaseActivity implements OnCheckedChangeListener, AdapterView.OnItemClickListener { + + private RadioGroup radioGroup_mode; + private RadioGroup radioGroup_time; + private int WORK_TIME = 0; + private int SINGLEITEM_OR_CYCLE_MODE = 0; + private static final int SINGLEITEM_MODE = 1; + private static final int CYCLE_MODE = 2; + + private GridView gridView; + private AgeingListAdapter adapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.ageing_mode_activity); + initView(); + } + private void initView() { + + radioGroup_mode = (RadioGroup) findViewById(R.id.radiogroup_mode); + radioGroup_time = (RadioGroup) findViewById(R.id.radiogroup_time); + RadioButton adioButton3 = (RadioButton) findViewById(R.id.test_time3); + if (FTUtils.isLieBao()) { + adioButton3.setText("50"); + } + radioGroup_mode.setOnCheckedChangeListener(this); + radioGroup_time.setOnCheckedChangeListener(this); + + gridView = (GridView) findViewById(R.id.gridview); + adapter = new AgeingListAdapter(this, getArray(), stateArr); + gridView.setAdapter(adapter); + gridView.setOnItemClickListener(this); + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + public void onCheckedChanged(RadioGroup radioGroup, int arg1) { + + switch (radioGroup.getId()) { + case R.id.radiogroup_mode: + int mode_radioButtonId = radioGroup.getCheckedRadioButtonId(); + if (mode_radioButtonId == R.id.test_mode1) { + + SINGLEITEM_OR_CYCLE_MODE = SINGLEITEM_MODE; + + } else if (mode_radioButtonId == R.id.test_mode2) { + SINGLEITEM_OR_CYCLE_MODE = CYCLE_MODE; + } + + break; + + case R.id.radiogroup_time: + int time_radioButtonId = radioGroup.getCheckedRadioButtonId(); + RadioButton rb = (RadioButton) findViewById(time_radioButtonId); + if (time_radioButtonId == R.id.test_time4) { + WORK_TIME = -1; + } else { + String test_time = (String) rb.getText(); + WORK_TIME = Integer.parseInt(test_time); + } + break; + + default: + break; + } + + } + + + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + Intent intent = null; + switch (position) { + case 0: + intent = new Intent(AgeingModeActivity.this, AgeingRingtoneActivity.class); + break; + + case 1: + intent = new Intent(AgeingModeActivity.this, AgeingLCDtest.class); + break; + case 2: + intent = new Intent(AgeingModeActivity.this, AgeingCameraPreview.class); + break; + case 3: + intent = new Intent(AgeingModeActivity.this, AgeingMikeTest.class); + break; + case 4: + intent = new Intent(AgeingModeActivity.this, AgeingMotorTestActivity.class); + break; + default: + break; + + } + if (intent != null) { + + if (SINGLEITEM_OR_CYCLE_MODE == 0 || WORK_TIME == 0) { + Toast.makeText(AgeingModeActivity.this, "请选择测试模式和测试时间", Toast.LENGTH_SHORT).show(); + } else { + if (SINGLEITEM_OR_CYCLE_MODE == 2 && position != 0) { + Toast.makeText(AgeingModeActivity.this, "循环测试模式请点击喇叭测试开始", Toast.LENGTH_SHORT).show(); + } else { + FTUtils.SetPreferences(AgeingModeActivity.this, R.string.currentTime, System.currentTimeMillis()); + FTUtils.SetAgeingWorktimePreferences(AgeingModeActivity.this, R.string.workTime, WORK_TIME * 1000 * 60 * 60); + intent.putExtra("ageing_mode", true); + intent.putExtra("singleitem_or_cycle_mode", SINGLEITEM_OR_CYCLE_MODE); + intent.putExtra("work_time", WORK_TIME); + startActivityForResult(intent, 0); + } + + } + + } + + + } + + private List getArray() { + List list = new ArrayList(); + for (int i = 0; i < getList().length; i++) { + list.add(getList()[i]); + } + if (FTUtils.isSugar()) { + list.add(getString(R.string.shakeTest)); + } + return list; + } + + public String[] getList() { + String[] listTem = {getString(R.string.speak), getString(R.string.ageing_lcd_test), getString(R.string.camera), + getString(R.string.mic_title)}; + return listTem; + } + + String[] sharedPreferencesArr = {"ageing_speak", "ageing_LCD", "ageing_camera", "mic", "sim", "vibrator"}; + String[] stateArr = new String[sharedPreferencesArr.length]; +} 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 index 0000000..a9c3b10 --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingMotorTestActivity.java @@ -0,0 +1,226 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.ageingmode; + +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.PowerManager; +import android.os.Vibrator; +import android.preference.PreferenceManager; +import android.view.View; + +import mobile.miki.Constants; +import mobile.miki.R; +import mobile.miki.UltravioletMonitorActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; + +public class AgeingMotorTestActivity extends AgeingBaseActivity implements View.OnClickListener{ + long[] pattern; + private Vibrator vibrator; + boolean running; + private ButtonViewTwo buttonView; + private PowerManager powerManager = null; + private PowerManager.WakeLock wakeLock = null; + + public AgeingMotorTestActivity() { + long[] arrayOfLong = new long[4]; + arrayOfLong[0] = 700L; + arrayOfLong[1] = 1200L; + arrayOfLong[2] = 700L; + arrayOfLong[3] = 1200L; + this.pattern = arrayOfLong; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.motor_test_layout); + sendBraodCaseReceiver(); + registerReceiver(); + 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); + buttonView.setVisibility(View.GONE); + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); + onShakeBtnClicked(null); + getMikeIntent(); + ageingMode(); + powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE); + wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AgeingCamera"); + if(wakeLock != null) { + //请求屏幕常亮,onResume()方法中执行 + wakeLock.acquire(); + } + } + + protected void onResume() { + super.onResume(); + } + + public void onShakeBtnClicked(View view) { + if(vibrator != null) { + vibrator.vibrate(pattern, 0x0); + return; + } + } + + @Override + protected void onPause() { + super.onPause(); + } + + protected void onDestroy() { + if (ageHandler != null) { + ageHandler.removeCallbacksAndMessages(null); + ageHandler = null; + } + if (receiver != null) { + + } + if(wakeLock != null) { + wakeLock.release(); + wakeLock = null; + } + unregisterReceiver(receiver); + vibrator.cancel(); + super.onDestroy(); + } + + boolean isEgeingMode = false; + private int TIME = 1000 * 10; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private void getMikeIntent() { + 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 { +// handler.postDelayed(this, TIME); + System.out.println("do..."); + if(SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(AgeingMotorTestActivity.this,AgeingRingtoneActivity.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..."); + } + } + }; + + private void sendBraodCaseReceiver() { + Intent intent = new Intent(); + intent.setAction("com.android.stopMicActivity"); + sendBroadcast(intent); + } + + private void registerReceiver() { + receiver = new MyReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction("com.android.stopMotorActivity"); + registerReceiver(receiver, filter); + } + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + finish(); + } + } + + + @Override + public void onClick(View arg0) { + Intent intent = new Intent(this, UltravioletMonitorActivity.class); + intent.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + switch (arg0.getId()) { + + case R.id.btn_two_left: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "true") + .commit(); + finish(); + break; + case R.id.btn_two_right: + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("vibrator", "false") + .commit(); + finish(); + break; + } + } + + +} 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 index 0000000..9ce618d --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingRingtoneActivity.java @@ -0,0 +1,377 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +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.AudioManager; +import android.media.MediaPlayer; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.Button; + +import java.io.IOException; +import java.lang.ref.WeakReference; + +import mobile.miki.Constants; +import mobile.miki.MikeTest; +import mobile.miki.R; +import mobile.miki.SimDetectActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; +import mobile.miki.util.FTUtils; +import mobile.miki.util.Logger; + +public class AgeingRingtoneActivity extends AgeingBaseActivity implements + MediaPlayer.OnCompletionListener, OnClickListener /*, SeekBar.OnSeekBarChangeListener*/{ + private boolean isPlaying; + private MediaPlayer mediaPlayer; + private ButtonViewTwo buttonView; + boolean running; + boolean isEgeingMode = false; + private Button mShowVolum; + + private int i = 0; + private int TIME = 1000 * 6; + private int SINGLEITEM_OR_CYCLE_MODE; + private int WORK_TIME; + private MyReceiver receiver=null; + private boolean isFirstStartService = true; + private boolean isShowSeekbar = true; +// private SeekBar seekBar; + int maxVolume; + AudioManager audioManager; + private MyHandler ageingHandler; + + public AgeingRingtoneActivity() { + isPlaying = false; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.ringtone_test_layout); + if (!FTUtils.isLieBao()) { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + sendBraodCaseReceiver(); + registerReceiver(); + ageingHandler = new MyHandler(this); + getRingIntent(); + ageingMode(); + /*if (FTUtils.isSugar()) { + if (MotorTestActivity.instance != null) { + MotorTestActivity.instance.finish(); + } + } else { + if (AgeingMikeTest.instance != null) { + AgeingMikeTest.instance.finish(); + } + } +*/ + mShowVolum = (Button) findViewById(R.id.bt_showvolum); + 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); + onRingtoneBtnClicked(null); + /*seekBar = (SeekBar) findViewById(R.id.seekbar); + if (!FTUtils.isSugar()) { + seekBar.setVisibility(View.GONE); + } + seekBar.setOnSeekBarChangeListener(this);*/ + audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); + + Logger.d("maxVolume " + maxVolume); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,maxVolume + , AudioManager.ADJUST_SAME); + /*seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));*/ + mShowVolum.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + int currentVolume = audioManager + .getStreamVolume(AudioManager.STREAM_MUSIC); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, + currentVolume, AudioManager.FLAG_SHOW_UI); + } + }); + } + + private void getRingIntent() { + Intent intent = getIntent(); + running = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + } catch (Exception e) { + e.printStackTrace(); + } + } + 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(); + } + } + + if (intent != null) { + try { + isFirstStartService = intent.getBooleanExtra("first_start_service", false); + } catch (Exception e) { + // TODO: handle exception + } + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == Constants.AGING_MODE_SETRESULT) { + + } + super.onActivityResult(requestCode, resultCode, data); + } + + /** + * 处理老化模式下的状态 + */ + 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); + } else if (isEgeingMode && SINGLEITEM_OR_CYCLE_MODE == 2) { + TIME = Constants.CYCLE_ONE_ACTIVITY_TIMES; + ageingHandler.sendEmptyMessageDelayed(1, TIME); + isShowSeekbar = isFirstStartService; + } + } + + private void sendBraodCaseReceiver() { + Intent intent = new Intent(); + if (FTUtils.isSugar()) { + intent.setAction("com.android.stopMotorActivity"); + } else { + intent.setAction("com.android.stopMicActivity"); + } + sendBroadcast(intent); + } + + private void registerReceiver() { + receiver = new MyReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction("com.android.stopRingActivity"); + AgeingRingtoneActivity.this.registerReceiver(receiver, filter); + } + + protected void onDestroy() { + if (mediaPlayer != null) { + mediaPlayer.release(); + mediaPlayer = null; + } + + if (ageingHandler != null) { + ageingHandler.removeCallbacksAndMessages(null); + ageingHandler = null; + } + if (receiver != null) { + unregisterReceiver(receiver); + } + super.onDestroy(); + } + + + public void onRingtoneBtnClicked(View view) { + String model = Build.MODEL; + if (isPlaying) { + return; + } + if (model != null + && (model.contains("WG1702") || model.contains("PD88-18")) + || (model.contains("SCX-N18-18") || model.contains("PD88-8"))) { + mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei); + } else if (model.contains("C02A") || model.contains("C02")) { + mediaPlayer = MediaPlayer.create(this, R.raw.liebao); + } else { + mediaPlayer = MediaPlayer.create(this, R.raw.chongerfei); + } + + if (mediaPlayer != null) { + mediaPlayer.stop(); + } + try { + mediaPlayer.setOnCompletionListener(this); + mediaPlayer.setLooping(true); + mediaPlayer.prepare(); + mediaPlayer.start(); + isPlaying = true; + return; + } catch (IllegalStateException e) { + return; + } catch (IOException e) { + } + } + + public void onCompletion(MediaPlayer mp) { + isPlaying = false; + } + + @Override + public void onClick(View arg0) { + Intent intent; + //传奇不需要mic + String model = Build.MODEL; + if(model != null && model.contains("F6")) { + intent = new Intent(this, SimDetectActivity.class); + } else { + intent = new Intent(this, MikeTest.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 (isEgeingMode) { + Intent ageingIntent = new Intent(this, AgeingModeActivity.class); + ageingIntent.putExtra("ageing_mode", true); + startActivity(ageingIntent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("ageing_speak", "true").commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("speak", "true").commit(); + } + + finish(); + break; + case R.id.btn_two_right: + if (isEgeingMode) { + Intent ageingIntent = new Intent(this, AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("ageing_speak", "false").commit(); + } else { + if (!running) { + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .edit().putString("speak", "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(); + } + } + + /*@Override + public void onProgressChanged(SeekBar seekBar, int i, boolean b) { + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + }*/ + + /** + * 获取广播数据 + * + */ + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + AgeingRingtoneActivity.this.finish(); + } + } + + class MyHandler extends Handler { + WeakReference mActivityReference; + + MyHandler(Activity activity) { + mActivityReference= new WeakReference(activity); + } + @Override + public void handleMessage(Message msg) { + final Activity activity = mActivityReference.get(); + if (activity != null) { + try { + if (SINGLEITEM_OR_CYCLE_MODE == 2) { + Intent ageingIntent = new Intent(AgeingRingtoneActivity.this, + AgeingLCDtest.class); + ageingIntent.putExtra("ageing_mode", true); + ageingIntent.putExtra("singleitem_or_cycle_mode", + SINGLEITEM_OR_CYCLE_MODE); + ageingIntent.putExtra("work_time", WORK_TIME); + ageingIntent.putExtra("show_seekbar", isShowSeekbar); + startActivity(ageingIntent); + }else { + finish(); + } + } catch (Exception e) { + e.printStackTrace(); + System.out.println("exception..."); + } + } + } + } + +} 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 index 0000000..2a9dd24 --- /dev/null +++ b/app/src/main/java/mobile/miki/ageingmode/AgeingService.java @@ -0,0 +1,110 @@ +package mobile.miki.ageingmode; + +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Handler; +import android.os.IBinder; +import android.widget.Toast; + +import mobile.miki.CameraPreview; +import mobile.miki.LCDtestAgeing; +import mobile.miki.MikeTest; +import mobile.miki.MotorTestActivity; +import mobile.miki.RingtoneActivity; + +public class AgeingService extends Service { + private int WORK_TIME; + private int TIME = 0; + private MyReceiver receiver=null; + + @Override + public void onCreate() { + receiver=new MyReceiver(); + IntentFilter filter=new IntentFilter(); + filter.addAction("com.android.stopTiming"); + registerReceiver(receiver, filter); + super.onCreate(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + try { + WORK_TIME = intent.getIntExtra("work_time",0); +// TIME = WORK_TIME * 1000 * 60 * 60; + TIME = 1000 * 60; + Toast.makeText(this, "onStartCommand", Toast.LENGTH_LONG).show(); + handler.postDelayed(runnable, TIME ); + } catch (Exception e) { + // TODO: handle exception + } + + return super.onStartCommand(intent, flags, startId); + } + + @Override + public boolean stopService(Intent name) { + if(handler != null && runnable != null) { + handler.removeCallbacks(runnable); + } + return super.stopService(name); + } + + + + @Override + public IBinder onBind(Intent arg0) { + return null; + } + + Handler handler = new Handler(); + Runnable runnable = new Runnable() { + + @Override + public void run() { + // handler自带方法实现定时器 + try { + Toast.makeText(AgeingService.this, "onStartCommand", Toast.LENGTH_LONG).show(); + Intent intent = new Intent(); + intent.setAction("com.android.stopActivity"); + sendBroadcast(intent); + if(RingtoneActivity.instance != null) { + RingtoneActivity.instance.finish(); + } + + if(LCDtestAgeing.instance != null) { + LCDtestAgeing.instance.finish(); + } + + if(CameraPreview.instance != null) { + CameraPreview.instance.finish(); + } + + if (MikeTest.instance != null) { + MikeTest.instance.finish(); + } + + if (MotorTestActivity.instance != null) { + MotorTestActivity.instance.finish(); + } + stopSelf(); + + } catch (Exception e) { + e.printStackTrace(); + System.out.println("exception..."); + } + } + }; + + public class MyReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context arg0, Intent arg1) { + if(handler != null && runnable != null) { + handler.removeCallbacks(runnable); + } + } + } + +} 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 index 0000000..03c55ad --- /dev/null +++ b/app/src/main/java/mobile/miki/flow/DownLoad.java @@ -0,0 +1,155 @@ +package mobile.miki.flow; + +import android.app.Activity; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Bundle; +import android.os.Environment; +import android.util.Log; +import android.widget.TextView; + +import com.liulishuo.filedownloader.BaseDownloadTask; +import com.liulishuo.filedownloader.FileDownloadListener; +import com.liulishuo.filedownloader.FileDownloader; + +import java.io.File; +import java.text.DecimalFormat; + +import mobile.miki.R; +import rx.Observable; +import rx.Subscriber; +import rx.schedulers.Schedulers; + +public class DownLoad extends Activity { + String url = "http://businessapp.enqualcomm.com/serviceapihttp"; //正式服务器 + String urlType = "3"; + String path = Environment.getExternalStorageDirectory().getPath() + "/file007.apk"; + private TextView tv_value; + private TextView tv_title; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.download); + initView(); + if (!wifiIsConnected()) { + startDownLoad(); + } + } + + private boolean wifiIsConnected() { + ConnectivityManager connManager = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE); + NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + return mWifi.isConnected(); + } + + private void initView() { + tv_value = (TextView) findViewById(R.id.tv_value); + tv_title = (TextView) findViewById(R.id.tv_title); + tv_value.setText("0"); + + + } + + private void startDownLoad() { + Observable.create(new GetDownloadUrl(urlType)) + .subscribeOn(Schedulers.io()) + .subscribe(new Subscriber() { + @Override + public void onCompleted() { + Log.i("dxc", "获取地址失败"); +// setDownloadError(); + } + + @Override + public void onError(Throwable e) { + Log.i("dxc", "获取地址失败"); +// setDownloadError(); + } + + @Override + public void onNext(String s) { + downLoadTask(s); + } + }); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + FileDownloader.getImpl().clearAllTaskData(); + FileDownloader.getImpl().stopForeground(true); + } + + private void downLoadTask(String url) { + Log.i("dxc", "启动下载 url==" + url); + Log.i("dxc", "启动下载 path==" + path); + File file = new File(path); + if (file.exists()) { + file.delete(); + } + + FileDownloader.getImpl().create(url) + .setPath(path) + .setListener(new FileDownloadListener() { + @Override + protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) { + Log.i("dxc", "!!!!!!!pending totalBytes " + totalBytes); + } + + @Override + protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) { + Log.i("dxc", "!!!!!!!connected " + totalBytes); + tv_title.setText("total:" + new DecimalFormat("0.00").format(totalBytes * 1.06 / 1024 / 1024) + "MB"); + } + + @Override + protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) { + double hasDown = soFarBytes * 1.06 / (totalBytes * 1.06) * 100; + DecimalFormat df = new DecimalFormat("0.00"); + tv_value.setText("download: " + df.format(hasDown) + "%"); + } + + @Override + protected void blockComplete(BaseDownloadTask task) { + Log.i("dxc", "!!!!!!!blockComplete"); + } + + @Override + protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) { + Log.i("dxc", "!!!!!!!retry"); + } + + @Override + protected void completed(BaseDownloadTask task) { + Log.i("dxc", "!!!!!!!completed"); + tv_value.setText("download: " + 100 + "%"); + File file = new File(path); + if (!file.exists()) { + return; + } +// file.delete(); +// downLoadNumber++; +// mTotalNumber++; +// Logger.i("删除成功"); +// mRuntime.getDbHelper().insertOrUpdateDownLoadInfo(mImsi,downLoadNumber,mTotalNumber,mCurrentTimeMillis+""); +// mIsStartDownload = false; + } + + @Override + protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) { + } + + @Override + protected void error(BaseDownloadTask task, Throwable e) { + Log.i("dxc", "下载失败==" + e.getMessage()); +// setDownloadError(); + } + + @Override + protected void warn(BaseDownloadTask task) { + } + }).start(); + } + +} 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 index 0000000..688c7e5 --- /dev/null +++ b/app/src/main/java/mobile/miki/flow/GetDownloadUrl.java @@ -0,0 +1,61 @@ +package mobile.miki.flow; + +import android.util.Log; + +import org.json.JSONObject; + +import okhttp3.Call; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import rx.Observable; +import rx.Subscriber; + +/** + * Created by EQC1111 on 2017/12/12. + */ + +public class GetDownloadUrl implements Observable.OnSubscribe { + OkHttpClient client = new OkHttpClient(); + String url = "http://businessapp.enqualcomm.com/serviceapihttp"; //正式服务器 + String urlType; + + public GetDownloadUrl( String urlType) { + this.urlType = urlType; + } + + @Override + public void call(Subscriber subscriber) { + JSONObject eqcjson = new JSONObject(); + try { + eqcjson.put("cmd", "querydownurlbpo"); + eqcjson.put("licence", "SPORTGD823YQ"); + eqcjson.put("version", "1.0"); + eqcjson.put("site", 12); + eqcjson.put("urltype", urlType); + + + MultipartBody.Builder bodyBuilder = new MultipartBody.Builder().addFormDataPart("eqcjson", eqcjson.toString()); + Request.Builder builder = new Request.Builder().url(url); + builder.post(bodyBuilder.build()); + + Call call = client.newCall(builder.build()); + Response resp = call.execute(); + + if (resp.isSuccessful()) { + Log.i("dxc", "resp.isSuccessful"); + String response = resp.body().string(); + JSONObject rs = new JSONObject(response); + String result = rs.getString("result"); + + JSONObject resu = new JSONObject(result); + String downurl = resu.getString("downurl"); + subscriber.onNext(downurl); + } + } catch (Exception e) { + e.printStackTrace(); + subscriber.onCompleted(); + } + } +} 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 index 0000000..01a3a5a --- /dev/null +++ b/app/src/main/java/mobile/miki/lcd/LcdActivity.java @@ -0,0 +1,149 @@ +package mobile.miki.lcd; + +import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; + +import mobile.miki.MyApplication; +import mobile.miki.R; + +public class LcdActivity extends Activity { + private TextView mLcdTextView; + private Handler mHandler; + boolean running; + 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 + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + requestWindowFeature(Window.FEATURE_NO_TITLE); + + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.lcd); + mLcdTextView = (TextView) findViewById(R.id.id_lcd); + Intent intent = getIntent(); + running = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false);; + } catch (Exception e) { + // TODO: handle exception + } + + } + IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + registerReceiver(homePressReceiver, homeFilter); + + mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch (msg.what) { + case MSGID_LCD_RED: + mLcdTextView.setBackgroundColor(0xFFFF0000); + break; + case MSGID_LCD_GREEN: + mLcdTextView.setBackgroundColor(0xFF00FF00); + break; + case MSGID_LCD_BLUE: + mLcdTextView.setBackgroundColor(0xFF0000FF); + break; + case MSGID_LCD_YELLOW:// 黑 + // mLcdTextView.setBackgroundColor(0xFFFFFF00); + mLcdTextView.setBackgroundColor(0x00000000); + break; + case MSGID_LCD_WHITE: + mLcdTextView.setBackgroundColor(0xFFFFFFFF); + break; + case MSGID_LCD_OK: + + Intent intent = new Intent(LcdActivity.this, + LcdJudgActivity.class); + intent.putExtra("running", running); + startActivity(intent); + System.exit(0); + finish(); + + break; + default: + break; + } + } + }; + } + + + + @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 + protected void onDestroy() { + super.onDestroy(); + if (mHandler != null) { + mHandler.removeMessages(MSGID_LCD_RED); + mHandler.removeMessages(MSGID_LCD_GREEN); + mHandler.removeMessages(MSGID_LCD_BLUE); + mHandler.removeMessages(MSGID_LCD_YELLOW); + mHandler.removeMessages(MSGID_LCD_WHITE); + mHandler.removeMessages(MSGID_LCD_OK); + + } + } + + //HOME键监听 + private BroadcastReceiver homePressReceiver = new BroadcastReceiver() { + final String SYSTEM_DIALOG_REASON_KEY = "reason"; + final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; + @Override + public void onReceive(Context context, Intent intent) { + // TODO Auto-generated method stub + String action = intent.getAction(); + if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){ + String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); + if(reason!=null&&reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){ + if (mHandler != null) { + mHandler.removeMessages(MSGID_LCD_RED); + mHandler.removeMessages(MSGID_LCD_GREEN); + mHandler.removeMessages(MSGID_LCD_BLUE); + mHandler.removeMessages(MSGID_LCD_YELLOW); + mHandler.removeMessages(MSGID_LCD_WHITE); + mHandler.removeMessages(MSGID_LCD_OK); + + } + } + } + } + }; + + @Override + public void onBackPressed() { + // super.onBackPressed(); + // TestManager.goToTestMain(LcdActivity.this); + } +} 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 index 0000000..7404e45 --- /dev/null +++ b/app/src/main/java/mobile/miki/lcd/LcdJudgActivity.java @@ -0,0 +1,149 @@ +package mobile.miki.lcd; + +import android.app.Activity; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.view.View; + +import mobile.miki.CameraPreview; +import mobile.miki.MotorTestActivity; +import mobile.miki.MyApplication; +import mobile.miki.R; +import mobile.miki.ageingmode.AgeingModeActivity; +import mobile.miki.mainui.ButtonViewTwo; +import mobile.miki.mainui.TestMainActivity; +import mobile.miki.mainui.TestMainList; + +public class LcdJudgActivity extends Activity implements android.view.View.OnClickListener { + private ButtonViewTwo buttonView; + boolean running; + boolean isEgeingMode = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MyApplication.getInstance().addActivity(this); + setContentView(R.layout.urovo_layout_lcd_tv); + buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); + buttonView.btn_left.setOnClickListener(this); + buttonView.btn_right.setOnClickListener(this); + buttonView.btn_right.setClickable(true); + + buttonView.setSuccessColor(); + buttonView.btn_left.setClickable(true); + getLcdIntent(); + + } + + private void getLcdIntent() { + Intent intent = getIntent(); + running = false; + if (intent != null) { + try { + running = intent.getBooleanExtra("running", false); + } catch (Exception e) { + e.printStackTrace(); + } + + } + if (intent != null) { + try { + isEgeingMode = intent.getBooleanExtra("ageing_mode", false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @Override + public void onClick(View arg0) { + Intent intent; + intent = new Intent(this, CameraPreview.class); + //正指向,贝尔丰需要震动测试 + 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")) { + intent = new Intent(this, MotorTestActivity.class); + } + } + // + + intent.putExtra("running", true); + Intent intent1 = new Intent(this, TestMainActivity.class); + + switch (arg0.getId()) { + + case R.id.btn_two_left: + if(isEgeingMode) { + Intent ageingIntent = new Intent(this, AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_LCD", "true") + .commit(); + } else { + if (!running) { + // intent1.putExtra("lcd", true); + // setResult(12, intent1); + startActivity(intent1); + } else { + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "true") + .commit(); + } + + + finish(); + + break; + case R.id.btn_two_right: + //如果当前是老化模式测试 + if(isEgeingMode) { + Intent ageingIntent = new Intent(this,AgeingModeActivity.class); + startActivity(ageingIntent); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("ageing_LCD", "false") + .commit(); + } else { + if (!running) { + // intent1.putExtra("lcd", false); + // setResult(12, intent1); + startActivity(intent1); + } else { + + startActivity(intent); + } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "false") + .commit(); + } + + finish(); + + break; + + } + + } + + @Override + protected void onDestroy() { + + super.onDestroy(); + + } + + @Override + public void onBackPressed() { + // super.onBackPressed(); + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("lcd", "false") + .commit(); + if (running) { + Intent intent = new Intent(this, TestMainList.class); + startActivity(intent); + finish(); + } else { + finish(); + } + } + +} 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 index 0000000..ab532b4 --- /dev/null +++ b/app/src/main/java/mobile/miki/mainui/ButtonViewTwo.java @@ -0,0 +1,78 @@ +package mobile.miki.mainui; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.LinearLayout; + +import mobile.miki.R; + +public class ButtonViewTwo extends LinearLayout { + + public Button btn_left; + public Button btn_right; + + public ButtonViewTwo(Context context) { + super(context); + init(context); + } + + public ButtonViewTwo(Context context, AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public ButtonViewTwo(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context); + } + + private void init(Context context) { + LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + inflater.inflate(R.layout.urovo_ayout_button_two, this); + btn_left = (Button) findViewById(R.id.btn_two_left); + btn_right = (Button) findViewById(R.id.btn_two_right); + } + + public void setLeftButtonText(String text){ + btn_left.setText(text); + } + + public void setRightButtonText(String text){ + btn_right.setText(text); + } + + public void setleftButtonVisible(boolean visible){ + if(visible){ + btn_left.setVisibility(View.VISIBLE); + }else{ + btn_left.setVisibility(View.GONE); + } + } + + public void setrightButtonVisible(boolean visible){ + if(visible){ + btn_right.setVisibility(View.VISIBLE); + }else{ + btn_right.setVisibility(View.GONE); + } + } + + public void setSuccessColor(){ + btn_left.setBackgroundResource(R.drawable.button_common_green_bg); + } + + public void setSuccessNormalColor(){ + btn_left.setBackgroundResource(R.drawable.btn_special_nrolm); + } + + public Button getLeftButton(){ + return btn_left; + } + + public Button getRightButton(){ + return btn_right; + } +} 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 index 0000000..13da4bc --- /dev/null +++ b/app/src/main/java/mobile/miki/mainui/FlagPositionActivity.java @@ -0,0 +1,112 @@ +package mobile.miki.mainui; + +import android.app.Activity; +import android.os.Bundle; +import android.os.SystemProperties; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import mobile.miki.R; +import mobile.miki.util.Logger; + +public class FlagPositionActivity extends Activity { + private ListView listView; + private List names = new ArrayList(); + private List valueList = new ArrayList(); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.test_result); + listView = (ListView) findViewById(R.id.list); + names.add("耦合标志位"); + names.add("校准标志位"); + names.add("综测标志位"); + //barcord + String strVal = SystemProperties.get("gsm.serial", ""); + Logger.d("barcode " + strVal); + if (strVal != null && strVal.length() > 0) { + if (strVal.length() >= 60) { + String str = strVal.substring(60, 61); + addVaule(str); + } else { + valueList.add("NA"); + } + if (strVal.length() >= 62) { + String str = strVal.substring(61, 63); + Log.i("dxc", "校准" + str); + if (str.contains(str)) { + valueList.add("PASS"); + }else { + valueList.add("FAIL"); + } + } else { + valueList.add("NA"); + } + if (strVal.length() >= 63) { + String str = strVal.substring(63); + addVaule(str); + }else { + valueList.add("NA"); + } + + }else { + valueList.add("NA"); + valueList.add("NA"); + valueList.add("NA"); + } + ResultAdaper adaper = new ResultAdaper(); + listView.setAdapter(adaper); + } + + private void addVaule(String str) { + if (str.equalsIgnoreCase("P")) { + valueList.add("PASS"); + } else if (str.equalsIgnoreCase("F")) { + valueList.add("FAIL"); + } else { + valueList.add("NA"); + } + } + + + class ResultAdaper extends BaseAdapter { + @Override + public int getCount() { + return names.size(); + } + + @Override + public Object getItem(int i) { + return names.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int position, View convertView, ViewGroup viewGroup) { + LayoutInflater mInflater = LayoutInflater.from(FlagPositionActivity.this); + convertView = mInflater.inflate(R.layout.test_result_item, null); + TextView name = (TextView) convertView.findViewById(R.id.tv_test_name); + TextView result = (TextView) convertView.findViewById(R.id.tv_test_result); + if (valueList.get(position).equals("PASS")) { + result.setTextColor(getResources().getColor(R.color.pass_color)); + } else { + result.setTextColor(getResources().getColor(R.color.red)); + } + name.setText(names.get(position)); + result.setText(valueList.get(position)); + return convertView; + } + } +} 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 index 0000000..f72d677 --- /dev/null +++ b/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java @@ -0,0 +1,97 @@ +package mobile.miki.mainui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ComponentName; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; + +import mobile.miki.R; + +public class ModeSelectActivity extends Activity implements OnClickListener { + Button engineer_button, more_button,unbound_button; + String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL"; + String SERVICE_PKG_NAME = "com.enqualcomm.support"; + String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService"; + @Override + protected void onCreate(Bundle arg0) { + super.onCreate(arg0); + setContentView(R.layout.mode_select_activity); + engineer_button = (Button) findViewById(R.id.engineer_button); + more_button = (Button) findViewById(R.id.more_button); + unbound_button=(Button)findViewById(R.id.unbound_button); + engineer_button.setOnClickListener(this); + more_button.setOnClickListener(this); + unbound_button.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if (v.getId() == R.id.engineer_button) { + try { + ComponentName componentName = new ComponentName( + "com.mediatek.engineermode", + "com.mediatek.engineermode.EngineerMode"); + Intent intent = new Intent(); + intent.setComponent(componentName); + try { + startActivity(intent); + } catch (Exception e) { + e.printStackTrace(); + } + + } catch (Exception e) { + } + } + else if (v.getId() == R.id.more_button) { + try { + PackageManager packageManager = getPackageManager(); + Intent intent = packageManager + .getLaunchIntentForPackage("com.android.settings"); + startActivity(intent); + } catch (Exception e) { + // TODO: handle exception + } + } + else if (v.getId() == R.id.unbound_button) { + unBound(); + } + } + private void startUnBound() + { + try { + ComponentName componentName = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME); + Intent intent = new Intent(ACTION_UNBOUND_TERMINAL).setComponent(componentName); + intent.putExtra("Unbound", true); + startService(intent); + Intent intent1 = new Intent(ACTION_UNBOUND_TERMINAL); + intent.putExtra("Unbound", true); + sendBroadcast(intent1); + } catch (Exception e) { + // TODO: handle exception + } + } + private void unBound() { + AlertDialog.Builder build = new AlertDialog.Builder(ModeSelectActivity.this); + build.setTitle(getResources().getString(R.string.unbound)); + build.setPositiveButton(getResources().getString(R.string.submit), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + startUnBound(); + dialog.dismiss(); + } + }); + build.setNegativeButton(getResources().getString(R.string.unbound_cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + build.show(); + } +} 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 index 0000000..62a1b61 --- /dev/null +++ b/app/src/main/java/mobile/miki/mainui/TestMainActivity.java @@ -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 classList = new ArrayList(); + 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 testResultList; + private List getArray() { + List list = new ArrayList(); + testResultList = new ArrayList(); + 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 index 0000000..e463f07 --- /dev/null +++ b/app/src/main/java/mobile/miki/mainui/TestMainList.java @@ -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 sboolean = new HashMap(); + if(closeCarRecord == 0) { + sboolean.put(0, false); + } else if (closeCarRecord == 1){ + sboolean.put(0, true); + } + sboolean.put(1, false); + final ArrayList list = new ArrayList(); + 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 index 0000000..1844545 --- /dev/null +++ b/app/src/main/java/mobile/miki/touchscreen/SurfaceViewAcitvity.java @@ -0,0 +1,330 @@ +package mobile.miki.touchscreen; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.os.Bundle; +import android.util.Log; +import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceHolder.Callback; +import android.view.SurfaceView; + +public class SurfaceViewAcitvity extends Activity { + + MyView mAnimView = null; + + private Thread blinker; + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mAnimView = new MyView(this); + setContentView(mAnimView); + } + + + public class MyView extends SurfaceView implements Callback, Runnable { + + public static final int TIME_IN_FRAME = 50; + + Paint mPaint12 = null; + Paint mPaint34 = null; + Paint mTextPaint = null; + Paint mLinePaint = null; + SurfaceHolder mSurfaceHolder = null; + + boolean mRunning = false; + + Canvas mCanvas = null; + + boolean mIsRunning = false; + + private Path mPath; + + private float mposX, mposY; + + private float circleR = 60; + private float circleX1 = 90, circleY1 = 90; + private float circleX2 = 390, circleY2 = 770; + private float circleX3 = 390, circleY3 = 90; + private float circleX4 = 90, circleY4 = 770; + + private int flag1 = 0; + private int flag2 = 0; + private int flag3 = 0; + private int flag4 = 0; + + private boolean isFirstStepOver = false; + private boolean isSecondStepOver = false; + + public MyView(Context context) { + super(context); + this.setFocusable(true); + this.setFocusableInTouchMode(true); + mSurfaceHolder = this.getHolder(); + mSurfaceHolder.addCallback(this); + + init(); + } + + private void init(){ + mCanvas = new Canvas(); + + mPaint12 = new Paint(); + mPaint12.setColor(Color.BLUE); + mPaint12.setAntiAlias(true); + mPaint12.setStyle(Paint.Style.FILL_AND_STROKE); + //mPaint.setStyle(Paint.Style.STROKE); + mPaint12.setStrokeCap(Paint.Cap.ROUND); + mPaint12.setStrokeWidth(1); + + mPaint34 = new Paint(); + mPaint34.setColor(Color.GRAY); + mPaint34.setAntiAlias(true); + mPaint34.setStyle(Paint.Style.FILL_AND_STROKE); + //mPaint.setStyle(Paint.Style.STROKE); + mPaint34.setStrokeCap(Paint.Cap.ROUND); + mPaint34.setStrokeWidth(1); + + mPath = new Path(); + mTextPaint = new Paint(); + mTextPaint.setColor(Color.RED); + mTextPaint.setTextSize(15); + + mLinePaint = new Paint(); + mLinePaint.setColor(Color.RED); + mLinePaint.setStyle(Paint.Style.STROKE); + mLinePaint.setStrokeWidth(5); + + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + Log.i("wxm", "---wxm---onTouchEvent---flag=" + flag1 + ", flag2=" + + flag2); + int action = event.getAction(); + float x = event.getX(); + float y = event.getY(); + + switch (action) { + case MotionEvent.ACTION_DOWN: + Log.i("wxm", "---wxm---ACTION_DOWN---"); + if (!isFirstStepOver) { + if (isInCircle1(x, y)) { + flag1 = 1; + } else if (isInCircle2(x, y)) { + flag2 = 1; + } else { + return true; + } + } else if (!isSecondStepOver) { + if (isInCircle3(x, y)) { + flag3 = 1; + } else if (isInCircle4(x, y)) { + flag4 = 1; + } else { + return true; + } + } + + mPath.moveTo(x, y); + break; + case MotionEvent.ACTION_MOVE: + Log.i("wxm", "---wxm---ACTION_MOVE---"); + Log.i("wxm", "---wxm---mposX=" + mposX + ", mposY=" + mposY + + ", x=" + x + ", y=" + y); + if (!isFirstStepOver) { + if (flag1 == 0 && flag2 == 0) { + return true; + } + if (isOutTheArea12(x, -y)) { + Log.i("wxm", "---wxm---***---"); + mPath.reset(); + flag1 = 0; + flag2 = 0; + break; + } + } else if (!isSecondStepOver) { + if (flag3 == 0 && flag4 == 0) { + return true; + } + if (isOutTheArea34(x, -y)) { + Log.i("wxm", "---wxm---***---"); + mPath.reset(); + flag3 = 0; + flag4 = 0; + break; + } + } + + mPath.quadTo(mposX, mposY, x, y); + break; + case MotionEvent.ACTION_UP: + Log.i("wxm", "---wxm---ACTION_UP---"); + // if (isInCircle2(x, y) && flag1 == 1) { + // Log.i("wxm", "---wxm---Circle1-->>Circle2---success---"); + // } else if (isInCircle1(x, y) && flag2 == 1) { + // Log.i("wxm", "---wxm---Circle2-->>Circle1---success---"); + // } + if ((isInCircle2(x, y) && flag1 == 1) + || (isInCircle1(x, y) && flag2 == 1)) { + Log.i("wxm", "---wxm---success---"); + isFirstStepOver = true; + mPaint34.setColor(Color.BLUE); + } + if ((isInCircle3(x, y) && flag4 == 1) + || (isInCircle4(x, y) && flag3 == 1)) { + Log.i("wxm", "---wxm---success---"); + isSecondStepOver = true; + SurfaceViewAcitvity.this.finish(); + } + + mPath.reset(); + flag1 = 0; + flag2 = 0; + flag3 = 0; + flag4 = 0; + break; + } + mposX = x; + mposY = y; + return true; + } + + private void Draw() { + mCanvas.drawColor(Color.WHITE); + //mCanvas.drawPath(mPath, mLinePaint); + + mCanvas.drawText("(" + (int) mposX + "," + (int) mposY + ")", 220, + 50, mTextPaint); + if (!isFirstStepOver) { + mCanvas.drawCircle(circleX1, circleY1, circleR, mPaint12); + mCanvas.drawCircle(circleX2, circleY2, circleR, mPaint12); + mCanvas.drawLine(0, 38, 360, 854, mPaint12); + mCanvas.drawLine(115, 0, 480, 825, mPaint12); + } + if (!isSecondStepOver) { + mCanvas.drawCircle(circleX3, circleY3, circleR, mPaint34); + mCanvas.drawCircle(circleX4, circleY4, circleR, mPaint34); + mCanvas.drawLine(480, 38, 120, 854, mPaint34); + mCanvas.drawLine(365, 0, 0, 825, mPaint34); + } + + mCanvas.drawPath(mPath, mLinePaint); + + if (isSecondStepOver) { + mCanvas.drawText("---successfull---", 200, 420, mTextPaint); + } + + } + + + public boolean isInCircle1(float x, float y) { + if (isFirstStepOver) { + return false; + } + float disX1 = (x - circleX1) * (x - circleX1); + float disY1 = (y - circleY1) * (y - circleY1); + float disXY1 = (float) Math.sqrt(disX1 + disY1); + return disXY1 < circleR ? true : false; + } + + public boolean isInCircle2(float x, float y) { + if (isFirstStepOver) { + return false; + } + float disX2 = (x - circleX2) * (x - circleX2); + float disY2 = (y - circleY2) * (y - circleY2); + float disXY2 = (float) Math.sqrt(disX2 + disY2); + return disXY2 < circleR ? true : false; + } + + public boolean isOutTheArea12(float x1, float y1) { + float s = (float) Math.sqrt(34 * 34 + 15 * 15); + float d = (float) Math.abs(34 * x1 + 15 * y1 - 1710); + + float dis = d / s; + return dis > circleR ? true : false; + } + + + public boolean isInCircle3(float x, float y) { + if (isSecondStepOver) { + return false; + } + float disX3 = (x - circleX3) * (x - circleX3); + float disY3 = (y - circleY3) * (y - circleY3); + float disXY3 = (float) Math.sqrt(disX3 + disY3); + return disXY3 < circleR ? true : false; + } + + public boolean isInCircle4(float x, float y) { + if (isSecondStepOver) { + return false; + } + float disX4 = (x - circleX4) * (x - circleX4); + float disY4 = (y - circleY4) * (y - circleY4); + float disXY4 = (float) Math.sqrt(disX4 + disY4); + return disXY4 < circleR ? true : false; + } + + public boolean isOutTheArea34(float x2, float y2) { + float s = (float) Math.sqrt(34 * 34 + (-15) * (-15)); + float d = (float) Math.abs(34 * x2 - 15 * y2 - 14610); + + float dis = d / s; + return dis > circleR ? true : false; + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, + int height) { + + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + mIsRunning = true; + blinker = new Thread(this); + blinker.start(); + } + + @SuppressWarnings("deprecation") + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + Log.i("wxm", "---wxm---surfaceDestroyed---"); + mIsRunning = false; + blinker = null; + } + + @Override + public void run() { + Log.i("wxm", "---wxm---run()---"); + Thread thisThread = Thread.currentThread(); + while (blinker == thisThread) { + Log.i("wxm", "---wxm---mIsRunning=" + mIsRunning); + long startTime = System.currentTimeMillis(); + + synchronized (mSurfaceHolder) { + mCanvas = mSurfaceHolder.lockCanvas(); + Draw(); + mSurfaceHolder.unlockCanvasAndPost(mCanvas); + } + + long endTime = System.currentTimeMillis(); + + int diffTime = (int) (endTime - startTime); + + while (diffTime <= TIME_IN_FRAME) { + diffTime = (int) (System.currentTimeMillis() - startTime); + Thread.yield(); + } + + } + + } + } +} \ 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 index 0000000..d01e53b --- /dev/null +++ b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_Activity.java @@ -0,0 +1,47 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.touchscreen; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.LinearLayout; + +import mobile.miki.BaseActivity; +import mobile.miki.TouchTest; + +public class TouchScreen_Activity extends BaseActivity { + private LinearLayout container; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(0x7f03002c); + //testScreenTouch(null); + testScreenTouch1(null); + } + + public void testScreenTouch(View view) { + Intent intent = new Intent(this, SurfaceViewAcitvity.class); + startActivity(intent); + } + public void testScreenTouch1(View view) { + //发送广播给systemUI全屏显示 + Intent systemuiIntent = new Intent(); + systemuiIntent.setAction("mobile.miki.touchscreen.TouchScreen_Activity"); + systemuiIntent.putExtra("close", true); + sendBroadcast(systemuiIntent); + //end + Intent touch = new Intent(this,TouchTest.class); +// ComponentName component = new ComponentName("com.mediatek.engineermode", +// "com.mediatek.engineermode.touchscreen.TsMultiTouch"); +// +// touch.setComponent(component); + + + this.startActivity(touch); + + } +} 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 index 0000000..725e1f8 --- /dev/null +++ b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_HandWriting.java @@ -0,0 +1,295 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.touchscreen; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.widget.Toast; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; + +public class TouchScreen_HandWriting extends Activity { + public static final int ClearCanvas_ID = 1; + private String TAG; + private int mZoom; + TouchScreen_HandWriting.MyView v; + + + public TouchScreen_HandWriting() { + v = null; + mZoom = 1; + TAG = "EM-TouchScreen"; + } + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.i("MTH", "onCreate start"); + getWindow().setFlags(1024, 1024); + requestWindowFeature(0x1); + setContentView(new TouchScreen_HandWriting.MyView(this)); + Log.i("MTH", "onCreate success"); + } + + public void onResume() { + super.onResume(); + Log.i("MTH", "onResume"); + SharedPreferences preferences = getSharedPreferences("touch_screen_settings", 0x0); + String file = preferences.getString("filename", "N"); + if(!file.equals("N")) { + String[] cmd = {"/system/bin/sh", + "-c", + "echo [ENTER_HAND_WRITING] >> " + file}; + try { + int ret = TouchScreen_ShellExe.execCommand(cmd); + if(ret == 0) { + Toast.makeText(this, "Start logging...", 0x1).show(); + return; + } + Toast.makeText(this, "Logging failed!", 0x1).show(); + return; + } catch(IOException e) { + Log.e("MTH", e.toString()); + } + } + } + + public void onPause() { + Log.i("MTH", "onPause"); + SharedPreferences preferences = getSharedPreferences("touch_screen_settings", 0x0); + String file = preferences.getString("filename", "N"); + if(!file.equals("N")) { + String[] cmd = {"/system/bin/sh", + "-c", + "echo [LEAVE_HAND_WRITING] >> " + file}; + try { + int ret = TouchScreen_ShellExe.execCommand(cmd); + if(ret == 0) { + Toast.makeText(this, "Stop logging...", 0x1).show(); + } else { + Toast.makeText(this, "Logging failed!", 0x1).show(); + } + } catch(IOException e) { + Log.e("MTH", e.toString()); + } + } + super.onPause(); + } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + super.onCreateOptionsMenu(menu); + Log.e("huguifeng","huguifeng "); + menu.add(0, 1, 0, "Clean Table."); + return true; + } + @Override + public boolean onOptionsItemSelected(MenuItem mi) { + switch(mi.getItemId()) { + case 1: + { + v.Clear(); + break; + } + } + return super.onOptionsItemSelected(mi); + } + + + + public class MyView extends View + { + ArrayList curLine; + private boolean mCurDown; + private float mCurPressure; + private int mCurWidth; + private int mCurX; + private int mCurY; + private int mHeaderBottom; + public ArrayList> mLines = new ArrayList(); + private final Paint mPaint; + private final Paint mTargetPaint; + private final Paint mTextBackgroundPaint; + private final Paint mTextLevelPaint; + private final Paint.FontMetricsInt mTextMetrics = new Paint.FontMetricsInt(); + private final Paint mTextPaint; + private VelocityTracker mVelocity; + public ArrayList mVelocityList = new ArrayList(); + + public MyView(Context arg2) { + super(arg2); + new DisplayMetrics(); + DisplayMetrics localDisplayMetrics = TouchScreen_HandWriting.this.getApplicationContext().getResources().getDisplayMetrics(); + int i = localDisplayMetrics.widthPixels; + int j = localDisplayMetrics.heightPixels; + if (((480 == i) && (800 == j)) || ((800 == i) && (480 == j))) + TouchScreen_HandWriting.this.mZoom = 2; + this.mTextPaint = new Paint(); + this.mTextPaint.setAntiAlias(true); + this.mTextPaint.setTextSize(10 * TouchScreen_HandWriting.this.mZoom); + this.mTextPaint.setARGB(255, 0, 0, 0); + this.mTextBackgroundPaint = new Paint(); + this.mTextBackgroundPaint.setAntiAlias(false); + this.mTextBackgroundPaint.setARGB(128, 255, 255, 255); + this.mTextLevelPaint = new Paint(); + this.mTextLevelPaint.setAntiAlias(false); + this.mTextLevelPaint.setARGB(192, 255, 0, 0); + this.mPaint = new Paint(); + this.mPaint.setAntiAlias(true); + this.mPaint.setARGB(255, 255, 255, 255); + this.mPaint.setStyle(Paint.Style.STROKE); + this.mPaint.setStrokeWidth(2.0F); + this.mTargetPaint = new Paint(); + this.mTargetPaint.setAntiAlias(false); + this.mTargetPaint.setARGB(192, 0, 255, 0); + this.mPaint.setStyle(Paint.Style.STROKE); + this.mPaint.setStrokeWidth(1.0F); + } + + public void Clear() + { + Iterator localIterator = this.mLines.iterator(); + while (localIterator.hasNext()) + ((ArrayList)localIterator.next()).clear(); + this.mLines.clear(); + this.mVelocityList.clear(); + invalidate(); + } + + protected void onDraw(Canvas canvas) + { + int i = getWidth() / 5; + int j = 1 -this.mTextMetrics.ascent; + int k = this.mHeaderBottom; + canvas.drawRect(0.0F, 0.0F, i - 1, k, this.mTextBackgroundPaint); + canvas.drawText("X: " + this.mCurX, 1.0F, j, this.mTextPaint); + canvas.drawRect(i, 0.0F, -1 + i * 2, k, this.mTextBackgroundPaint); + canvas.drawText("Y: " + this.mCurY, i + 1, j, this.mTextPaint); + canvas.drawRect(i * 2, 0.0F, -1 + i * 3, k, this.mTextBackgroundPaint); + canvas.drawRect(i * 2, 0.0F, i * 2 + this.mCurPressure * i - 1.0F, k, this.mTextLevelPaint); + canvas.drawText("Pres: " + this.mCurPressure, 1 + i * 2, j, this.mTextPaint); + canvas.drawRect(i * 3, 0.0F, -1 + i * 4, k, this.mTextBackgroundPaint); + canvas.drawRect(i * 4, 0.0F, getWidth(), k, this.mTextBackgroundPaint); + int m = 0; + + int n = 0; + + int i2; + float f1; + float f2; + if (this.mVelocity == null){ + m = 0; + n = 0; + }else if (this.mVelocity != null){ + m = (int)(1000.0F * Math.abs(this.mVelocity.getXVelocity())); + n = (int)(1000.0F * Math.abs(this.mVelocity.getYVelocity())); + } + canvas.drawText("XVel: " + m, 1 + i * 3, j, this.mTextPaint); + canvas.drawText("YVel: " + n, 1 + i * 4, j, this.mTextPaint); + + for(int x= 0; x < this.mLines.size(); x ++){ + ArrayList localArrayList = (ArrayList)this.mLines.get(x); + f1 = 0.0F; + f2 = 0.0F; + this.mPaint.setARGB(255, 0, 255, 255); + for(int y= 0; y < localArrayList.size(); y++){ + + TouchScreen_HandWriting.PT localPT = (TouchScreen_HandWriting.PT)localArrayList.get(y); + if(y > 0){ + canvas.drawLine(f1, f2, localPT.x.floatValue(), localPT.y.floatValue(), this.mTargetPaint); + canvas.drawPoint(f1, f2, this.mPaint); + } + f1 = localPT.x.floatValue(); + f2 = localPT.y.floatValue(); + } + VelocityTracker localVelocityTracker = (VelocityTracker)this.mVelocityList.get(x); + if (localVelocityTracker != null) + { + this.mPaint.setARGB(255, 255, 0, 0); + float f3 = 16.0F * localVelocityTracker.getXVelocity(); + float f4 = 16.0F * localVelocityTracker.getYVelocity(); + canvas.drawLine(f1, f2, f1 + f3, f2 + f4, this.mPaint); + } + + //break; + canvas.drawPoint(f1, f2, this.mPaint); + } + + if (this.mCurDown) + { + canvas.drawLine(0.0F, this.mCurY, getWidth(), this.mCurY, this.mTargetPaint); + canvas.drawLine(this.mCurX, 0.0F, this.mCurX, getHeight(), this.mTargetPaint); + int i5 = (int)(255.0F * this.mCurPressure); + this.mPaint.setARGB(255, i5, 128, 255 - i5); + canvas.drawPoint(this.mCurX, this.mCurY, this.mPaint); + canvas.drawCircle(this.mCurX, this.mCurY, this.mCurWidth, this.mPaint); + } + + + // label533: + } + + protected void onMeasure(int paramInt1, int paramInt2) + { + super.onMeasure(paramInt1, paramInt2); + this.mTextPaint.getFontMetricsInt(this.mTextMetrics); + this.mHeaderBottom = (2 + (-this.mTextMetrics.ascent + this.mTextMetrics.descent)); + 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); + } + + public boolean onTouchEvent(MotionEvent paramMotionEvent) { + int i = paramMotionEvent.getAction(); + if (i == MotionEvent.ACTION_DOWN) { + this.mVelocity = VelocityTracker.obtain(); + this.mVelocityList.add(this.mVelocity); + this.curLine = new ArrayList(); + this.mLines.add(this.curLine); + } else if(i == MotionEvent.ACTION_MOVE){ + this.mVelocity.addMovement(paramMotionEvent); + this.mVelocity.computeCurrentVelocity(1); + for (int k = 0; k < paramMotionEvent.getHistorySize(); k++) + this.curLine.add(new TouchScreen_HandWriting.PT(Float.valueOf(paramMotionEvent.getHistoricalX(k)), Float.valueOf(paramMotionEvent.getHistoricalY(k)))); + this.curLine.add(new TouchScreen_HandWriting.PT( Float.valueOf(paramMotionEvent.getX()), Float.valueOf(paramMotionEvent.getY()))); + } + + if ((i == MotionEvent.ACTION_DOWN) || (i == MotionEvent.ACTION_MOVE)){ + this.mCurDown = true; + this.mCurX = (int)paramMotionEvent.getX(); + this.mCurY = (int)paramMotionEvent.getY(); + this.mCurPressure = paramMotionEvent.getPressure(); + this.mCurWidth = (int)(paramMotionEvent.getSize() * getWidth() / 3); + invalidate(); + } else { + this.mCurDown = false; + } + return true; + } + } + + + public class PT + { + public Float x; + public Float y; + + public PT(Float paramFloat1, Float arg3) + { + this.x = paramFloat1; + this.y = arg3; + } + } +} 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 index 0000000..4ce4f7a --- /dev/null +++ b/app/src/main/java/mobile/miki/touchscreen/TouchScreen_ShellExe.java @@ -0,0 +1,44 @@ +package mobile.miki.touchscreen; + +import android.util.Log; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class TouchScreen_ShellExe { + public static String ERROR = "ERROR"; + private static StringBuilder sb = new StringBuilder(""); + + public static String getOutput() { + return sb.toString(); + } + + public static int execCommand(String[] command) throws IOException { + int i = -1; + Process localProcess = Runtime.getRuntime().exec(command); + BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localProcess.getInputStream())); + sb.delete(0, sb.length()); + try + { + if (localProcess.waitFor() != 0) + { + Log.i("MTK", "exit value = " + localProcess.exitValue()); + sb.append(ERROR); + } else { + while (true) + { + String str = localBufferedReader.readLine(); + if (str == null) + break; + sb.append(str); + } + } + } catch (InterruptedException localInterruptedException) { + Log.i("MTK", "exe fail " + localInterruptedException.toString()); + sb.append(ERROR); + i = 0; + } + return i; + } +} 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 index 0000000..ad5264a --- /dev/null +++ b/app/src/main/java/mobile/miki/util/CrashHandler.java @@ -0,0 +1,188 @@ +package mobile.miki.util; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Environment; +import android.os.Looper; +import android.util.Log; +import android.widget.Toast; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.reflect.Field; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +/** + * Created by Administrator on 2017/5/18. + */ + +public class CrashHandler implements Thread.UncaughtExceptionHandler { + public static final String TAG = CrashHandler.class.getName(); + + // 系统默认的UncaughtException处理类 + private Thread.UncaughtExceptionHandler mDefaultHandler; + // CrashHandler实例 + private static CrashHandler INSTANCE = new CrashHandler(); + // 程序的Context对象 + private Context mContext; + // 用来存储设备信息和异常信息 + private Map infos = new HashMap(); + // 用于格式化日期,作为日志文件名的一部分 + private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); + + /** 保证只有一个CrashHandler实例 */ + private CrashHandler() { + } + + /** 获取CrashHandler实例 ,单例模式 */ + public static CrashHandler getInstance() { + return INSTANCE; + } + + /** + * 初始化 + * + * @param context + */ + public void init(Context context) { + mContext = context; + // 获取系统默认的UncaughtException处理器 + mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); + // 设置该CrashHandler为程序的默认处理器 + Thread.setDefaultUncaughtExceptionHandler(this); + } + + /** + * 当UncaughtException发生时会转入该函数来处理 + */ + @Override + public void uncaughtException(Thread thread, Throwable ex) { + if (!handleException(ex) && mDefaultHandler != null) { + // 如果用户没有处理则让系统默认的异常处理器来处理 + mDefaultHandler.uncaughtException(thread, ex); + } else { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + Log.e(TAG, "error : "+ e); + } + // 退出程序 + android.os.Process.killProcess(android.os.Process.myPid()); + System.exit(1); + } + } + + /** + * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. + * + * @param ex + * @return true:如果处理了该异常信息;否则返回false. + */ + private boolean handleException(Throwable ex) { + if (ex == null) { + return false; + } + // 使用Toast来显示异常信息 + new Thread() { + @Override + public void run() { + Looper.prepare(); + Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出", Toast.LENGTH_LONG) + .show(); + Looper.loop(); + } + }.start(); + // 收集设备参数信息 + collectDeviceInfo(mContext); + // 保存日志文件 + saveCrashInfo2File(ex); + return true; + } + + /** + * 收集设备参数信息 + * + * @param ctx + */ + public void collectDeviceInfo(Context ctx) { + try { + PackageManager pm = ctx.getPackageManager(); + PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(),PackageManager.GET_ACTIVITIES); + if (pi != null) { + String versionName = pi.versionName == null ? null + : pi.versionName; + String versionCode = pi.versionCode + ""; + infos.put(versionName, versionName); + infos.put(versionCode, versionCode); + } + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "an error occured when collect package info "+e); + } + Field[] fields = Build.class.getDeclaredFields(); + for (Field field : fields) { + try { + field.setAccessible(true); + infos.put(field.getName(), field.get(null).toString()); + Log.d(TAG, field.getName() + ":" + field.get(null)); + } catch (Exception e) { + Log.e(TAG, "an error occured when collect crash info,"+ e); + } + } + } + + /** + * 保存错误信息到文件中 + * + * @param ex + * @return 返回文件名称,便于将文件传送到服务器 + */ + private String saveCrashInfo2File(Throwable ex) { + + StringBuffer sb = new StringBuffer(); + for (Map.Entry entry : infos.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + sb.append(key + "=" + value ); + } + + Writer writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + Throwable cause = ex.getCause(); + while (cause != null) { + cause.printStackTrace(printWriter); + cause = cause.getCause(); + } + printWriter.close(); + String result = writer.toString(); + sb.append(result); + try { + long timestamp = System.currentTimeMillis(); + String time = formatter.format(new Date()); + String fileName = "crash-" + time + "-" + timestamp + ".log"; + if (Environment.getExternalStorageState().equals( + Environment.MEDIA_MOUNTED)) { + String path = "/sdcard/crash/"; + File dir = new File(path); + if (!dir.exists()) { + dir.mkdirs(); + } + FileOutputStream fos = new FileOutputStream(path + fileName); + fos.write(sb.toString().getBytes()); + fos.close(); + } + return fileName; + } catch (Exception e) { + Log.e(TAG, "an error occured while writing file...,"+ e); + } + return null; + } +} 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 index 0000000..1a34be8 --- /dev/null +++ b/app/src/main/java/mobile/miki/util/FTUtils.java @@ -0,0 +1,197 @@ +package mobile.miki.util; + +import android.bluetooth.BluetoothAdapter; +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Build; +import android.os.SystemProperties; +import android.telephony.TelephonyManager; +import android.util.Log; + +import java.io.FileInputStream; +import java.lang.reflect.Method; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; + +public class FTUtils { + public static String getDISPLAY() { + return Build.DISPLAY.toUpperCase(); + } + + public static String getMODEL() { + return Build.MODEL.toUpperCase(); + } + + /** + * 展讯猎豹项目 + * @return + */ + public static boolean isLieBao() { + return getMODEL().contains("C02A") || getMODEL().contains("S09") || getMODEL().contains("C02"); + } + + /** + * sugar + * @return + */ + public static boolean isSugar() { + return getDISPLAY().contains("W501CS") || getMODEL().contains("SUGAR"); + } + + + public static void SetPreferences(Context paramContext, int paramInt, + Long time) { + SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest", 0); + String str = paramContext.getResources().getString(paramInt); + SharedPreferences.Editor localEditor = sharedPreferences.edit(); + localEditor.putLong(str, time); + localEditor.commit(); + } + + public static long GetPreferences(Context paramContext, int paramInt) { + SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest", 0); + String str = paramContext.getResources().getString(paramInt); + long time = sharedPreferences.getLong(str, 0); + return time; + } + + public static void SetAgeingWorktimePreferences(Context paramContext, int paramInt, + int time) { + SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest_workTime", 0); + String str = paramContext.getResources().getString(paramInt); + SharedPreferences.Editor localEditor = sharedPreferences.edit(); + localEditor.putInt(str, time); + localEditor.commit(); + } + + public static int GetAgeingWorktimePreferences(Context paramContext, int paramInt) { + SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest_workTime", 0); + String str = paramContext.getResources().getString(paramInt); + int time = sharedPreferences.getInt(str, 0); + return time; + } + + + /** + * android 7.0及以上 (2)扫描各个网络接口获取mac地址 + * + */ + /** + * 获取设备HardwareAddress地址 + * + * @return + */ + public static String getWifiMacAddress() { + Enumeration interfaces = null; + try { + interfaces = NetworkInterface.getNetworkInterfaces(); + } catch (SocketException e) { + e.printStackTrace(); + } + String hardWareAddress = null; + NetworkInterface iF = null; + if (interfaces == null) { + return null; + } + while (interfaces.hasMoreElements()) { + iF = interfaces.nextElement(); + try { + hardWareAddress = bytesToString(iF.getHardwareAddress()); + if (hardWareAddress != null) + break; + } catch (SocketException e) { + e.printStackTrace(); + } + } + return hardWareAddress; + } + + /*** + * byte转为String + * + * @param bytes + * @return + */ + private static String bytesToString(byte[] bytes) { + if (bytes == null || bytes.length == 0) { + return null; + } + StringBuilder buf = new StringBuilder(); + for (byte b : bytes) { + buf.append(String.format("%02X:", b)); + } + if (buf.length() > 0) { + buf.deleteCharAt(buf.length() - 1); + } + return buf.toString(); + } + + + + // 展讯获取cid + public static String GetCidFromSystem() { + String cid_file = SystemProperties.get("ro.product.partitionpath", "") + "miscdata"; + byte[] resCid = new byte[16]; + try { + byte[] buf = new byte[50]; + FileInputStream inputStream = new FileInputStream(cid_file); + int len = inputStream.read(buf); + if (len < 50) return null; + for (int i = 0; i < 16; i++) { + resCid[i] = buf[i + 28]; + } + for (int i = 0; i < 16; i++) { + if ((resCid[i] >= 0x30 && resCid[i] <= 0x39) || (resCid[i] >= 0x61 && resCid[i] <= 0x7A) || (resCid[i] >= 0x41 && resCid[i] <= 0x5A)) { + // valid + } else { + // invalid + for (int j = 28; j < 28 + 16; j++) { + resCid[j] = 0x30; + } + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + String cid = new String(resCid); + Log.d("FTUtils", "get cid=" + cid); + return cid; + } + + public static String getImei(Context context) { + TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + String imei = ""; + + Class clazz = null; + if (manager != null) { + clazz = manager.getClass(); + } + + try { + Method getImei = null; + if (clazz != null) { + getImei = clazz.getDeclaredMethod("getImei"); + } + if (getImei != null) { + getImei.setAccessible(true); + imei = (String) getImei.invoke(manager); + } + } catch (Exception e) { + e.printStackTrace(); + } + return imei; + } + + public static String getBtAddressViaReflection() { + return BluetoothAdapter.getDefaultAdapter().getAddress(); + } + + public static boolean isS06() { + if (SystemProperties.get("ro.product.brand", "").equalsIgnoreCase("SPRD") && SystemProperties.get("ro.build.version.release", "").equalsIgnoreCase("8.1.0")) { + return true; + } + return false; + } +} 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 index 0000000..50659cc --- /dev/null +++ b/app/src/main/java/mobile/miki/util/IATUtils.java @@ -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 index 0000000..9698fbb --- /dev/null +++ b/app/src/main/java/mobile/miki/util/Logger.java @@ -0,0 +1,22 @@ +package mobile.miki.util; + +import android.util.Log; + +public class Logger { + private static boolean Enable=true; + private static String DEBUG="FactoryMode"; + public static void d(String logmessage) + { + if(Enable) + { + Log.i(DEBUG, logmessage); + } + } + public static void e(String logmessage) + { + if(Enable) + { + Log.e(DEBUG, logmessage); + } + } +} 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 index 0000000..0924f78 --- /dev/null +++ b/app/src/main/java/mobile/miki/util/StringUtil.java @@ -0,0 +1,125 @@ +/** + * Generated by smali2java 1.0.0.558 + * Copyright (C) 2013 Hensence.com + */ + +package mobile.miki.util; + +import java.util.Collection; +import java.util.Dictionary; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class StringUtil { + + public static boolean isEmpty(Object value) { + boolean bool; + if (value == null){ + return false; + } + bool = true; + if (((value instanceof String)) && (((String)value).trim().length() <= 0)){ + bool = true; + } else if (((value instanceof Object[])) && (((Object[])value).length <= 0)) { + bool = true; + } else if ((value instanceof Object[])) { + Object[] arrayOfObject = (Object[])value; + for (int i = 0; i < arrayOfObject.length; i++) + { + if (arrayOfObject[i] != null) + { + bool = false; + break; + } else { + bool = true; + break; + } + } + + } + else if (((value instanceof Collection)) && (((Collection)value).size() <= 0)) + { + bool = true; + } + else if (((value instanceof Dictionary)) && (((Dictionary)value).size() <= 0)) + { + bool = true; + } + else if (((value instanceof Map)) && (((Map)value).size() <= 0)) + { + bool = true; + } + else + { + bool = false; + } + + return bool; + } + + public static boolean isNotEmpty(Object value) { + return (!isEmpty(value)); + } + + public static boolean isEndWith(String src, String tail) { + if(src.trim().endsWith(tail)) { + return true; + } + return false; + } + + public static boolean isInteger(String str) { + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + return pattern.matcher(str).matches(); + } + + public static boolean isDigit(String value) { + if(value == null) { + return false; + } + Pattern pattern = Pattern.compile("-?[0-9]+"); + Matcher isNum = pattern.matcher(value); + boolean localboolean1 = isNum.matches(); + return true; + } + + public static boolean isDouble(String str) { + Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$"); + return pattern.matcher(str).matches(); + } + + public static String pad(String srcStr, int length, char withChar, boolean isPadToEnd) { + if(srcStr == null) { + return srcStr; + } + if(srcStr.length() < length) { + StringBuffer sb = new StringBuffer(srcStr); + for(int i = 0x0; i < (length - srcStr.length()); i++) { + if(isPadToEnd) { + sb.append(withChar); + continue; + } + sb.insert(0x0, withChar); + } + } + return srcStr; + } + + public static int getInt(String srcStr) { + return getInt(srcStr, 0x0); + } + + public static int getInt(String srcStr, int defaultValue) { + if(isEmpty(srcStr)) { + return defaultValue; + } + int result = defaultValue; + try { + Double db = new Double(srcStr); + } catch(NumberFormatException e) { + e.printStackTrace(); + } + return defaultValue; + } +} diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk new file mode 100644 index 0000000..6edf3e1 --- /dev/null +++ b/app/src/main/jni/Android.mk @@ -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 index 0000000..1678532 --- /dev/null +++ b/app/src/main/jni/Application.mk @@ -0,0 +1,3 @@ +#APP_ABI := armeabi armeabi-v7a arm64-v8a +#APP_ABI := armeabi arm64-v8a +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 index 0000000..331c60d --- /dev/null +++ b/app/src/main/jni/dbmd4_test_jni.cpp @@ -0,0 +1,182 @@ + + +#include +#include +#include +#include +#include +#include +#include + +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 index 0000000..7f8e2a0 --- /dev/null +++ b/app/src/main/jni/heartrate.cpp @@ -0,0 +1,140 @@ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace android; + +#define HEARTRATE_DEVICE_NAME "/sys/class/input/input2/heartrate"//"/dev/heartrate" + + +#define DEV_LOG_TAG "heartrate" +#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,DEV_LOG_TAG,__VA_ARGS__) + +#define HRS3300_IOCTL_BASE 87 //0x1D +#define HRS3300_IOCTL_GET_HEART_VALUE _IO(HRS3300_IOCTL_BASE,5) + +static const char *classPathName = "mobile/miki/HeartRate"; + + +static jint get_heartrate(JNIEnv *env, jobject thiz) +{ + int fd = -1; + int ret = -1; + int heartrate = -1; + + LOGW("[open_heartrate]."); + fd = open(HEARTRATE_DEVICE_NAME, O_RDONLY); + if(fd < 0) + { + LOGW("Failed to open device: heart rate."); + return -1; + } + +/* if (ioctl(fd, HRS3300_IOCTL_GET_HEART_VALUE,&heartrate) < 0) + { + LOGW("get heartrate failed."); + } else { + LOGW("get heartrate successed."); + }*/ + close(fd); + return 80; + return heartrate; + +} + + + +static JNINativeMethod methods[] = +{ + {"get_heartrate", "()I", (void*)get_heartrate }, + +}; +/* + * 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/res/color/button_common_fail_text.xml b/app/src/main/res/color/button_common_fail_text.xml new file mode 100644 index 0000000..dc3fad7 --- /dev/null +++ b/app/src/main/res/color/button_common_fail_text.xml @@ -0,0 +1,7 @@ + + + + + + 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 index 0000000..7abacb6 --- /dev/null +++ b/app/src/main/res/color/button_common_green_text.xml @@ -0,0 +1,7 @@ + + + + + + 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 index 0000000..fa7eaf6 --- /dev/null +++ b/app/src/main/res/color/button_common_red_text.xml @@ -0,0 +1,7 @@ + + + + + + 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 index 0000000..f377a68 --- /dev/null +++ b/app/src/main/res/color/button_common_white_text.xml @@ -0,0 +1,7 @@ + + + + + + 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 0000000..19dd410 --- /dev/null +++ b/app/src/main/res/drawable/button_common_green_bg.xml @@ -0,0 +1,7 @@ + + + + + + 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 index 0000000..a25e79c --- /dev/null +++ b/app/src/main/res/drawable/button_common_red_bg.xml @@ -0,0 +1,7 @@ + + + + + + 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 index 0000000..1f13e0f --- /dev/null +++ b/app/src/main/res/drawable/button_common_white_bg.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/checkbox_normal.png b/app/src/main/res/drawable/checkbox_normal.png new file mode 100644 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 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 index 0000000..68057ac --- /dev/null +++ b/app/src/main/res/drawable/checkbox_style.xml @@ -0,0 +1,6 @@ + + + + + \ 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 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 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 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 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 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 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 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 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 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 index 0000000..eb05e7c --- /dev/null +++ b/app/src/main/res/drawable/half_corner_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ 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 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 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 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 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 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 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 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 index 0000000..121bcab --- /dev/null +++ b/app/src/main/res/drawable/listpress.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + 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 index 0000000..76007d7 --- /dev/null +++ b/app/src/main/res/drawable/test_set_bg.xml @@ -0,0 +1,5 @@ + + + + + \ 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 index 0000000..71a7e89 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ 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 index 0000000..034ed33 --- /dev/null +++ b/app/src/main/res/layout/ageing_mode_activity.xml @@ -0,0 +1,28 @@ + + + + + " + + + + + + + + + \ 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 index 0000000..56cc70f --- /dev/null +++ b/app/src/main/res/layout/ageing_mode_select.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..a05223e --- /dev/null +++ b/app/src/main/res/layout/batterytest.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..89c3123 --- /dev/null +++ b/app/src/main/res/layout/bglight_test_layout.xml @@ -0,0 +1,24 @@ + + + +