From: SnickerSun Date: Fri, 6 Aug 2021 09:34:52 +0000 (+0800) Subject: 修改代码适配 android 8.1 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=0cf1d51a6d382ee46827ef9dcbd42ffc86fb2505;p=protocol_srv.git 修改代码适配 android 8.1 已完成: GPS,LBS,WiFi,AlarmManager , AT指令 未完成: 蓝牙ble扫描 还未 适配完毕, apn 还不能设置,心率,体温 还不能测试。 --- diff --git a/app/build.gradle b/app/build.gradle index b84b7c47..852fb4f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ static def getApkBaseName() { } android { - compileSdkVersion 25 - buildToolsVersion "25.0.1" + compileSdkVersion 29 + buildToolsVersion "29.0.3" def currentVersionCode = getVersionCode() def currentVersionName = releaseTime() defaultConfig { @@ -83,9 +83,12 @@ android { // } } dependencies { - compileOnly files('libs/telephony-common-full-debug.jar') - compileOnly files('libs/frameworks-full-debug.jar') - compileOnly files('libs/frameworks-2-full-debug.jar') +// compileOnly files('libs/telephony-common-full-debug.jar') +// compileOnly files('libs/frameworks-full-debug.jar') +// compileOnly files('libs/frameworks-2-full-debug.jar') + compileOnly files('libs/8.1_telephony-common_full_debug.jar') + compileOnly files('libs/8.1_framework_full_debug.jar') + implementation 'com.android.support.constraint:constraint-layout:1.1.3' //compile fileTree(include: ['*.jar', '*.aar'], dir: 'libs') diff --git a/app/libs/8.1_framework_full_debug.jar b/app/libs/8.1_framework_full_debug.jar new file mode 100644 index 00000000..5d0e384a Binary files /dev/null and b/app/libs/8.1_framework_full_debug.jar differ diff --git a/app/libs/8.1_telephony-common_full_debug.jar b/app/libs/8.1_telephony-common_full_debug.jar new file mode 100644 index 00000000..6d84a9fa Binary files /dev/null and b/app/libs/8.1_telephony-common_full_debug.jar differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3a2a8622..fe78fb26 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,6 +48,8 @@ + + @@ -80,7 +82,7 @@ - + diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index ff9e0c49..8604f4d8 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -3,6 +3,8 @@ package com.enqualcomm.support; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.BroadcastReceiver; @@ -14,6 +16,7 @@ import android.content.IntentFilter; import android.database.Cursor; import android.media.AudioManager; import android.net.Uri; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; @@ -132,6 +135,7 @@ public class CoreService extends Service { private static final int GRAY_SERVICE_ID = android.os.Process.myPid(); + public static String CHANNEL_ID_STRING = CoreService.class.getPackage().getName(); private static final String MY_WAKE_LOCKTAG = CoreService.class.getSimpleName(); public static final int interval = 60000; @@ -869,11 +873,22 @@ public class CoreService extends Service { this.locationClient.init(); //设置本service为前台运行,不被会被清理 - Notification notification = new Notification(); - notification.flags = Notification.FLAG_ONGOING_EVENT; - notification.flags |= Notification.FLAG_NO_CLEAR; - notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; - startForeground(GRAY_SERVICE_ID, notification); + + //适配8.0service + NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); + NotificationChannel mChannel = null; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + mChannel = new NotificationChannel(CHANNEL_ID_STRING, " ", NotificationManager.IMPORTANCE_HIGH); + notificationManager.createNotificationChannel(mChannel); + Notification notification = new Notification.Builder(getApplicationContext(), CHANNEL_ID_STRING).build(); + notification.flags = Notification.FLAG_ONGOING_EVENT; + notification.flags |= Notification.FLAG_NO_CLEAR; + notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; + startForeground(GRAY_SERVICE_ID, notification); + } + + + //注册接收 时间和tiimezone 变更消息 IntentFilter intentFilter = new IntentFilter(); @@ -987,9 +1002,14 @@ public class CoreService extends Service { //有新消息就发送出去 ContentResolver resolver = runtime.getContextProxy().getResolver(); WeTalkMsgObserver weTalkMsgObserver = new WeTalkMsgObserver(mHandler, resolver); - resolver.registerContentObserver( - Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver - ); + try { + resolver.registerContentObserver( + Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver + ); + }catch (Exception e){ + ICLogger.e(e.getMessage(),e); + } + //启动结束设置标志位,让心率和体温检测可以正常执行。 server_starting = false; @@ -1658,9 +1678,33 @@ public class CoreService extends Service { /*给 API >= 18 的平台上用的灰色保活手段*/ public int onStartCommand(Intent param1Intent, int param1Int1, int param1Int2) { - startForeground(GRAY_SERVICE_ID, new Notification()); - stopForeground(true); - stopSelf(); + +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { +// Notification.Builder builder = new Notification.Builder(this); +// +// builder.setSmallIcon(R.mipmap.ic_launcher); +// +// builder.setContentTitle("KeepAppAlive"); +// +// builder.setContentText("DaemonService is runing..."); +// +// startForeground(GRAY_SERVICE_ID, builder.build()); + +// 如果觉得常驻通知栏体验不好 + +// 可以通过启动CancelNoticeService,将通知移除,oom_adj值不变 + +// Intent intent = new Intent(this, CoreService.class); +// +// startService(intent); +// +// } else { +// startForeground(GRAY_SERVICE_ID, new Notification()); +// +// } +// startForeground(GRAY_SERVICE_ID, new Notification()); +// stopForeground(true); +// stopSelf(); return super.onStartCommand(param1Intent, param1Int1, param1Int2); } } diff --git a/app/src/main/java/com/enqualcomm/support/GPSActivity.java b/app/src/main/java/com/enqualcomm/support/GPSActivity.java index 7eec8db2..2801c349 100644 --- a/app/src/main/java/com/enqualcomm/support/GPSActivity.java +++ b/app/src/main/java/com/enqualcomm/support/GPSActivity.java @@ -4,7 +4,11 @@ import android.app.Activity; import android.graphics.Color; import android.graphics.Rect; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Message; import android.os.PowerManager; +import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -31,7 +35,8 @@ public class GPSActivity extends Activity implements location_callback { private TextView mSearchCount; private boolean showmessage=false; final LocationSnrAdapter adapter = new LocationSnrAdapter(testSnrEntriyDate(null)); - + private Handler mHandler = null; + ICLocation.GPS_locationStatus g_gps_status=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -52,31 +57,48 @@ public class GPSActivity extends Activity implements location_callback { mStar.setText("0 in 0/ inMap 0"); mHoop.setText("0.0ç±³"); mSearchCount.setText("0秒"); + if (mHandler == null) { + mHandler = new Handler(this.getMainLooper(),new Handler.Callback(){ + @Override + public boolean handleMessage(@NonNull Message msg) { + if (g_gps_status !=null) { + List gpslist = g_gps_status.numSatelliteList; + adapter.updateLocationValue(testSnrEntriyDate(gpslist)); + String fixed = new StringBuilder().append(g_gps_status.locating_status > 0 ? + "Fixed " : "notFixed ").append(TimeUtil.getLocalTime2()).toString(); + String satlites = new StringBuilder("used ").append(g_gps_status.used_gps_numbs).append(" in ") + .append(g_gps_status.numSatelliteList.size()).append("/ inMap ").append(g_gps_status.satlite_numbss).toString(); + String locationTime = new StringBuilder().append(g_gps_status.search_time_cost).append("秒").toString(); + String hdop = new StringBuilder().append(String.valueOf(g_gps_status.hdop)).append("ç±³").toString(); + mFix.setText(fixed); + if (mFix.getText().toString().contains("notFixed")) { + mFix.setBackgroundColor(Color.RED); + mFix.setTextColor(Color.WHITE); + } else { + mFix.setBackgroundColor(Color.GREEN); + mFix.setTextColor(Color.BLACK); + } + mStar.setText(satlites); + mHoop.setText(hdop); + mSearchCount.setText(locationTime); + } + return false; + } + } + ); + } + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } + @Override public void on_locating_changed(ICLocation.GPS_locationStatus gps_status) { - List gpslist =gps_status.numSatelliteList; - adapter.updateLocationValue(testSnrEntriyDate(gpslist)); - String fixed=new StringBuilder().append(gps_status.locating_status>0? - "Fixed ":"notFixed ").append(TimeUtil.getLocalTime2()).toString(); - String satlites=new StringBuilder("used ").append(gps_status.used_gps_numbs).append(" in ") - .append(gps_status.numSatelliteList.size()).append("/ inMap ").append(gps_status.satlite_numbss).toString(); - String locationTime=new StringBuilder().append(gps_status.search_time_cost).append("秒").toString(); - String hdop=new StringBuilder().append(String.valueOf(gps_status.hdop)).append("ç±³").toString(); - mFix.setText(fixed); - if (mFix.getText().toString().contains("notFixed")){ - mFix.setBackgroundColor(Color.RED); - mFix.setTextColor(Color.WHITE); - }else{ - mFix.setBackgroundColor(Color.GREEN); - mFix.setTextColor(Color.BLACK); - } - mStar.setText(satlites); - mHoop.setText(hdop); - mSearchCount.setText(locationTime); + g_gps_status = gps_status; + + mHandler.sendEmptyMessage(1); + } public class SpacesItemDecoration extends RecyclerView.ItemDecoration { diff --git a/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java b/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java index c063b8db..2e4f81ca 100644 --- a/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java +++ b/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java @@ -178,19 +178,19 @@ public class BTHelper { //停止自定义广播 public void stopGattAdvertising() { - if (mBtAdapter.isEnabled()) - mBtAdapter.stopAdvertising(advcb); + //if (mBtAdapter.isEnabled()) + // mBtAdapter.stopAdvertising(advcb); } //开启自定义广播数据,前两字会被丢弃 public void enableGattAdvertising(String serverData) { byte[] serviceData = serverData.getBytes(); - if (mBtAdapter.isEnabled()) - mBtAdapter.startAdvertising(advcb, serviceData); + //if (mBtAdapter.isEnabled()) + // mBtAdapter.startAdvertising(advcb, serviceData); } - public class advcallback implements BluetoothAdapter.AdvertiseCallback { + public class advcallback implements BluetoothAdapter.LeScanCallback { public void onAdvertiseStart(int status) { @@ -203,6 +203,12 @@ public class BTHelper { ICLogger.i("-- onAdvertiseStop --"); } + + @Override + public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { + ICLogger.i("-- onLeScan --" + rssi); + + } } private class BLeScanCallback implements LeScanCallback { diff --git a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java index c28f4059..0fc81b57 100644 --- a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java @@ -131,6 +131,7 @@ public class HeartRateManager extends AbstractInvokeHandlerService { //绑定远程服务 Intent intent = new Intent(); intent.setAction(ACTION_HEART_RATE); + intent.setPackage(ICApplication.sContext.getPackageName()); ICApplication.sContext.bindService(intent, mRemoteConnection, Context.BIND_AUTO_CREATE); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java b/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java index 35efdc78..d292c308 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java @@ -6,15 +6,15 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.Telephony; -import android.sim.Sim; +//import android.sim.Sim; import android.telephony.TelephonyManager; import android.util.Log; import android.widget.Toast; import com.android.internal.telephony.Phone; -import com.android.internal.telephony.PhoneFactory; +//import com.android.internal.telephony.PhoneFactory; import com.enqualcomm.support.bean.ApnSetting; -import android.sim.SimManager; +//import android.sim.SimManager; import java.lang.reflect.Method; diff --git a/app/src/main/java/com/enqualcomm/support/utils/AlarmHelper.java b/app/src/main/java/com/enqualcomm/support/utils/AlarmHelper.java index a6bb83b0..42de0e0e 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/AlarmHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/AlarmHelper.java @@ -19,17 +19,17 @@ public class AlarmHelper { private static final long ONE_WEEK = 604800000L; - private static Method setImpl; +// private static Method setImpl; static { - try { - setImpl = AlarmManager.class.getDeclaredMethod("setImpl", new Class[]{int.class, long.class, long.class, long.class, PendingIntent.class, android.os.WorkSource.class}); - setImpl.setAccessible(true); - - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(), e); - } +// try { +// setImpl = AlarmManager.class.getDeclaredMethod("setImpl", new Class[]{int.class, long.class, long.class, long.class, PendingIntent.class, android.os.WorkSource.class}); +// setImpl.setAccessible(true); +// +// } catch (Exception e) { +// e.printStackTrace(); +// ICLogger.e(e.getMessage(), e); +// } } //设置闹铃 diff --git a/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java b/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java index bedd8297..633bc74c 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java @@ -38,7 +38,7 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.provider.Settings; import android.provider.Telephony; -import android.sim.SimManager; +//import android.sim.SimManager; import android.telephony.TelephonyManager; import android.text.Editable; import android.text.Selection; @@ -221,7 +221,7 @@ public class ApnEditor { mBearerArray = mRes.getStringArray(R.array.bearer_entries); - mAPNUri = Telephony.Carriers.getContentUri(mPhoneId, null); +// mAPNUri = Telephony.Carriers.getContentUri(mPhoneId, null); mUri = mAPNUri; mTelephonyManager = (TelephonyManager) mContext.getSystemService(TELEPHONY_SERVICE); @@ -237,9 +237,9 @@ public class ApnEditor { // values.put(APN_ID, mSelectedKey); // resolver.update(PREFERAPN_URI, values, null, null); values.put("apn_id", key); - resolver.update( - Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), - values, null, null); +// resolver.update( +// Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), +// values, null, null); /* @} */ } @@ -250,18 +250,18 @@ public class ApnEditor { // Cursor cursor = getContentResolver().query(PREFERAPN_URI, new // String[] {"_id"}, // null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); - Cursor cursor = mContext.getContentResolver().query( - Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), - new String[] { - "_id" - }, - null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); +// Cursor cursor = mContext.getContentResolver().query( +// Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), +// new String[] { +// "_id" +// }, +// null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); /* @} */ - if (cursor.getCount() > 0) { - cursor.moveToFirst(); - key = cursor.getString(0); - } - cursor.close(); +// if (cursor.getCount() > 0) { +// cursor.moveToFirst(); +// key = cursor.getString(0); +// } +// cursor.close(); ICLogger.d(" get default apnkey "+key); return key; } @@ -354,22 +354,22 @@ public class ApnEditor { public String getCurrentAPN(){ - String where; - String mccmnc; - if (TelephonyManager.isMultiSim()) { - mccmnc = android.os.SystemProperties.get(TelephonyManager.getProperty( - TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, mPhoneId), ""); - // APNs are listed based on the MCC+MNC. - // Get the value from appropriate Telephony Property based on the - // subscription. - where = "numeric=\"" + mccmnc + "\""; - - } else { - mccmnc = android.os.SystemProperties.get( - TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, ""); - where = "numeric=\"" + mccmnc + "\""; - - } + String where=""; + String mccmnc=""; +// if (TelephonyManager.isMultiSim()) { +// mccmnc = android.os.SystemProperties.get(TelephonyManager.getProperty( +// TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, mPhoneId), ""); +// // APNs are listed based on the MCC+MNC. +// // Get the value from appropriate Telephony Property based on the +// // subscription. +// where = "numeric=\"" + mccmnc + "\""; +// +// } else { +// mccmnc = android.os.SystemProperties.get( +// TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, ""); +// where = "numeric=\"" + mccmnc + "\""; +// +// } where += " and name!='CMCC DM'"; Log.d(TAG,"where = " + where + ",mccmnc =" + mccmnc); @@ -398,8 +398,7 @@ public class ApnEditor { public boolean resetAPNtoDefault(){ // resolver.delete(DEFAULTAPN_URI, null, null); - int rows = mContext.getContentResolver().delete(Telephony.Carriers.getContentUri(mPhoneId, - Telephony.Carriers.PATH_RESTORE),null,null); + int rows = 0;//mContext.getContentResolver().delete(Telephony.Carriers.getContentUri(mPhoneId,Telephony.Carriers.PATH_RESTORE),null,null); return rows>=0; } public boolean addVPN(String apnName, String apn, String mcc, String mnc, String user, String passwd) { @@ -496,16 +495,16 @@ public class ApnEditor { // String numeric = // SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC); String numeric; - if (TelephonyManager.isMultiSim()) { - // APNs are automatically added with MCC+MNC. - // Get the value from appropriate Telephony Property based - // on the mPhoneId. - numeric = SystemProperties - .get(TelephonyManager.getProperty(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, mPhoneId)); - - } else { +// if (TelephonyManager.isMultiSim()) { +// // APNs are automatically added with MCC+MNC. +// // Get the value from appropriate Telephony Property based +// // on the mPhoneId. +// numeric = SystemProperties +// .get(TelephonyManager.getProperty(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, mPhoneId)); + +// } else { numeric = SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC); - } +// } /* @} */ // MCC is first 3 chars and then in 2 - 3 chars of MNC if (numeric != null && numeric.length() > 4) { @@ -658,7 +657,7 @@ public class ApnEditor { int mDDS = 0; try { - mDDS = Settings.System.getInt(mContext.getContentResolver(), Settings.System.MULTI_SIM_DATA_CALL); +// mDDS = Settings.System.getInt(mContext.getContentResolver(), Settings.System.MULTI_SIM_DATA_CALL); } catch (Exception e) { ICLogger.e( "Exception Reading Dual Sim Data Subscription Value.", e); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java index 32f775b5..4fc7d979 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java @@ -1,6 +1,7 @@ package com.enqualcomm.support.utils; import android.content.Context; +import android.content.IClipboard; import android.os.Build; import android.os.Handler; import android.os.Message; @@ -21,15 +22,15 @@ import android.telephony.TelephonyManager; import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; -import com.android.internal.telephony.CallManager; -import com.android.internal.telephony.CallStateException; -import com.android.internal.telephony.Phone; -import com.android.internal.telephony.PhoneFactory; +//import com.android.internal.telephony.CallManager; +//import com.android.internal.telephony.CallStateException; +//import com.android.internal.telephony.Phone; +//import com.android.internal.telephony.PhoneFactory; import com.enqualcomm.support.Config; import com.enqualcomm.support.GSensorListener; import com.enqualcomm.support.adapter.LBSHelper; import com.enqualcomm.support.bean.Runtime; -import com.sprd.internal.telephony.SprdCallManager; +//import com.sprd.internal.telephony.SprdCallManager; import java.lang.reflect.Method; import java.util.Collections; @@ -79,27 +80,27 @@ public class CellInfoUtil { // } // } // }); - Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1() { - public void call(Object param1Object) { - - PhoneFactory.makeDefaultPhones(context); - - Phone p = PhoneFactory.getDefaultPhone(); - - SprdCallManager cm = (SprdCallManager)SprdCallManager.getInstance(); - - cm.registerPhone(p); - - Phone phone = cm.getDefaultPhone(); - - try { - phone.dial(dialnumber); - } catch (Exception e) { - ICLogger.PrintExceptionStackTrace(e); - ICLogger.e(e.getMessage(),e); - } - } - }); +// Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1() { +// public void call(Object param1Object) { +// +// PhoneFactory.makeDefaultPhones(context); +// +// Phone p = PhoneFactory.getDefaultPhone(); +// +// SprdCallManager cm = (SprdCallManager)SprdCallManager.getInstance(); +// +// cm.registerPhone(p); +// +// Phone phone = cm.getDefaultPhone(); +// +// try { +// phone.dial(dialnumber); +// } catch (Exception e) { +// ICLogger.PrintExceptionStackTrace(e); +// ICLogger.e(e.getMessage(),e); +// } +// } +// }); } public static int getSignal(TelephonyManager tm , Runtime runtime){ @@ -245,12 +246,11 @@ public class CellInfoUtil { int size=1; if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) { sortByRssi(neighboringCell_list); - + ICLogger.i("signal CellInfo size "+neighboringCell_list.size()); Iterator cell = neighboringCell_list.iterator(); - while(cell.hasNext()) { - NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next(); + NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next(); if (mNeighboringCellInfo.getLac() == -1) { break; } diff --git a/app/src/main/java/com/enqualcomm/support/utils/IATUtils.java b/app/src/main/java/com/enqualcomm/support/utils/IATUtils.java new file mode 100644 index 00000000..d13f030a --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/utils/IATUtils.java @@ -0,0 +1,42 @@ +package com.enqualcomm.support.utils; + +import android.os.ServiceManager; +import android.util.Log; + +import com.ic.jni.AtCMD; + + +public class IATUtils { + private static final String TAG = "IATUtils"; + 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 String sendATCmd(String cmd, String serverName) { + + + strTmp = "error service can't get"; + try { + String result = sendAtCmd(cmd); + Log.d(TAG, "result = " + result); + return result; + } catch (Exception se) { + Log.d("AT Exception", se.toString()); + strTmp += " 8541 "; + } + return strTmp; + + } + + private static String sendAtCmd(String cmd){ + String result=""; + if(AtCMD.loadlibrary_success) { + result = AtCMD.native_sendATCmd(0, cmd); + }else{ + result="library load failed!"; + } + return result; + } +} diff --git a/app/src/main/java/com/enqualcomm/support/utils/ICAudioManager.java b/app/src/main/java/com/enqualcomm/support/utils/ICAudioManager.java index d65d0788..b74e76a9 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ICAudioManager.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ICAudioManager.java @@ -35,8 +35,7 @@ public class ICAudioManager { ICLogger.i("======setVolumnMute"); // saved_volumn = audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); if (audioManager != null) { - audioManager.setMasterMute(true); - +// audioManager.setMasterMute(true); audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true); audioManager.setSpeakerphoneOn(false); } @@ -49,7 +48,7 @@ public class ICAudioManager { ICLogger.i("======restoreVolumn "+saved_volumn); AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); if (audioManager != null) { - audioManager.setMasterMute(false); +// audioManager.setMasterMute(false); audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, false); audioManager.setSpeakerphoneOn(true); @@ -63,7 +62,7 @@ public class ICAudioManager { ICLogger.i("======setVoiceCallMaxVolumn "); AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); if (audioManager != null) { - audioManager.setMasterMute(false); +// audioManager.setMasterMute(false); int currentvolume=audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL); int maxvolume=audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,maxvolume,0); diff --git a/app/src/main/java/com/enqualcomm/support/utils/ImageUtil.java b/app/src/main/java/com/enqualcomm/support/utils/ImageUtil.java index da1d607c..0f669645 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ImageUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ImageUtil.java @@ -38,7 +38,8 @@ public class ImageUtil { //在画布上绘制水印图片 canvas.drawBitmap(watermark, paddingLeft, paddingTop, null); // 保存 - canvas.save(Canvas.ALL_SAVE_FLAG); +// canvas.save(Canvas.ALL_SAVE_FLAG); + canvas.save(); // 存储 canvas.restore(); return newb; diff --git a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java index ae7d8e09..05edf86e 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java @@ -169,28 +169,18 @@ public class SimSignalUtil { } public static void send_at_to_reset_simcard(Runtime runtime) { - - Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs"); - intent.putExtra("command", "AT+SFUN=2"); //重新初始化sim卡 - intent.putExtra("arg2", ""); - (runtime.getContextProxy()).context.sendBroadcast(intent); - ICLogger.i("send_at_to_reset_simcard "); + String ret=IATUtils.sendATCmd("AT+SFUN=2",""); + ICLogger.i("send_at_to_reset_simcard "+ret); } public static void send_at_to_update_lbs(Runtime runtime) { - Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs"); - intent.putExtra("command", "AT+CREG=2"); - intent.putExtra("arg2", ""); - (runtime.getContextProxy()).context.sendBroadcast(intent); - ICLogger.i("send_at_to_update_lbs "); + String ret=IATUtils.sendATCmd("AT+CREG=2",""); + ICLogger.i("send_at_to_update_lbs "+ret); } public static void send_at_cmd(Runtime runtime, String cmd) { - Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs"); - intent.putExtra("command", cmd); - intent.putExtra("arg2", ""); - (runtime.getContextProxy()).context.sendBroadcast(intent); - ICLogger.i("send_at_cmd " + cmd); + String ret=IATUtils.sendATCmd(cmd,""); + ICLogger.i("send_at_cmd "+cmd+" \r\nreply: "+ret); } public static void send_at_setImei0(Runtime runtime, String imei) { diff --git a/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java b/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java index 6a787967..67feb8bf 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java @@ -36,6 +36,7 @@ public class TemperatureUtil { private TemperatureUtil() { Intent intent = new Intent(); intent.setAction(ACTION_TEMPERATURE); + intent.setPackage(ICApplication.sContext.getPackageName()); //绑定远程服务 ICApplication.sContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } diff --git a/app/src/main/java/com/ic/jni/AtCMD.java b/app/src/main/java/com/ic/jni/AtCMD.java new file mode 100644 index 00000000..3e235a94 --- /dev/null +++ b/app/src/main/java/com/ic/jni/AtCMD.java @@ -0,0 +1,27 @@ +package com.ic.jni; + +import android.util.Log; + +public class AtCMD { + public static boolean loadlibrary_success=false; + static { + try { + System.loadLibrary("jni_atcmd"); + loadlibrary_success =true; + } catch (UnsatisfiedLinkError e) { + Log.d("ValidationToolsNative", " #loadLibrary jni_validationtools failed "); + e.printStackTrace(); + } + } + + /** + * send AT cmd to modem + * + * @return (String: the return value of send cmd, "OK":sucess, "ERROR":fail) + */ + public static native String native_sendATCmd(int phoneId, String cmd); + + public static native boolean native_hashValueWrited(); + + public static native int native_get_rootflag(); +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index e9f3aa3b..aed77c3d 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,8 @@ allprojects { tasks.withType(JavaCompile) { // options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\telephony-common-full-debug.jar') // options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\frameworks-full-debug.jar') - options.compilerArgs << '-Xbootclasspath/p:app\\libs\\frameworks-full-debug.jar;app\\libs\\telephony-common-full-debug.jar' +// options.compilerArgs << '-Xbootclasspath/p:app\\libs\\frameworks-full-debug.jar;app\\libs\\telephony-common-full-debug.jar' + options.compilerArgs << '-Xbootclasspath/p:app\\libs\\8.1_framework_full_debug.jar;app\\libs\\8.1_telephony-common_full_debug.jar' } } } diff --git a/local.properties b/local.properties index 8bb06342..db57af90 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Fri Jul 02 14:52:39 CST 2021 -sdk.dir=E\:\\Android\\Sdk +#Thu Jul 22 07:04:36 CST 2021 +sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk