Commit 07fe885c by cuiliang.shi

hengfeng 0.1

1 parent 4576f45f
Showing with 365 additions and 110 deletions
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<w>hengfeng</w> <w>hengfeng</w>
<w>imsi</w> <w>imsi</w>
<w>meid</w> <w>meid</w>
<w>packagename</w>
<w>toscl</w>
</words> </words>
</dictionary> </dictionary>
</component> </component>
\ No newline at end of file
...@@ -6,8 +6,8 @@ android { ...@@ -6,8 +6,8 @@ android {
applicationId "com.toscl.location.hengfeng" applicationId "com.toscl.location.hengfeng"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 28 targetSdkVersion 28
versionCode 11 versionCode 1
versionName "2.1" versionName "0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":11,"versionName":"2.1","enabled":true,"outputFile":"LocationServer_2.1.apk","fullName":"release","baseName":"release"},"path":"LocationServer_2.1.apk","properties":{}}] [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.1","enabled":true,"outputFile":"LocationServer_0.1.apk","fullName":"release","baseName":"release"},"path":"LocationServer_0.1.apk","properties":{}}]
\ No newline at end of file \ No newline at end of file
...@@ -3,49 +3,61 @@ ...@@ -3,49 +3,61 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="com.toscl.location.hengfeng"> package="com.toscl.location.hengfeng">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--android:sharedUserId="android.uid.system"-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<application <application
android:persistent="true" android:name="com.toscl.location.hengfeng.AppApplication"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:persistent="true"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:name="com.toscl.location.hengfeng.AppApplication"
tools:ignore="GoogleAppIndexingWarning"> tools:ignore="GoogleAppIndexingWarning">
<meta-data android:name="com.amap.api.v2.apikey" android:value="2e40c8d145f8a0d4f9bb1cc7590594e7">
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="1b2e99248562fde745c039d84ef09adc">
</meta-data> </meta-data>
<activity android:name="com.toscl.location.hengfeng.activity.ServiceSettingActivity"
<activity
android:name="com.toscl.location.hengfeng.activity.ServiceSettingActivity"
android:exported="true"> android:exported="true">
<!--
<intent-filter>
<action android:name="com.android.settings.action.EXTRA_SETTINGS" />
</intent-filter>
<!--<intent-filter>--> <meta-data
<!--<action android:name="com.android.settings.action.EXTRA_SETTINGS" />--> android:name="com.android.settings.category"
<!--</intent-filter>--> android:value="com.android.settings.category.ia.homepage" />
<!--<meta-data android:name="com.android.settings.category"--> <meta-data
<!--android:value="com.android.settings.category.ia.homepage" />--> android:name="com.android.settings.icon"
<!--<meta-data android:name="com.android.settings.icon"--> android:resource="@drawable/ic_sos" />
<!--android:resource="@drawable/ic_sos" />--> <meta-data
<!--<meta-data android:name="com.android.settings.title"--> android:name="com.android.settings.title"
<!--android:resource="@string/app_name" />--> android:resource="@string/app_name" />-->
</activity> </activity>
<activity android:name="com.toscl.location.hengfeng.activity.NavActivity"
<activity
android:name="com.toscl.location.hengfeng.activity.NavActivity"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
...@@ -53,26 +65,29 @@ ...@@ -53,26 +65,29 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="com.toscl.location.hengfeng.activity.ServiceInfoActivity"> <activity android:name="com.toscl.location.hengfeng.activity.ServiceInfoActivity" />
</activity>
<activity android:name="com.toscl.location.hengfeng.activity.ServiceApplyActivity" /> <activity android:name="com.toscl.location.hengfeng.activity.ServiceApplyActivity" />
<activity android:name="com.toscl.location.hengfeng.activity.ServiceStopActivity" /> <activity android:name="com.toscl.location.hengfeng.activity.ServiceStopActivity" />
<service android:name="com.amap.api.location.APSService" /> <service android:name="com.amap.api.location.APSService" />
<receiver android:name="com.toscl.location.hengfeng.recevier.LocationReceiver" <receiver
android:name="com.toscl.location.hengfeng.receiver.LocationReceiver"
android:permission="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"> android:permission="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">
<intent-filter> <intent-filter>
<action android:name="com.bird.send_sos" /> <action android:name="com.bird.send_sos" />
<action android:name="com.bird.close_sos" /> <action android:name="com.bird.close_sos" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<service android:name="com.toscl.location.hengfeng.LocationService"
<service
android:name="com.toscl.location.hengfeng.LocationService"
android:enabled="true" android:enabled="true"
android:exported="true"> android:exported="true" />
</service>
<receiver android:name="com.toscl.location.hengfeng.recevier.AlarmReceiver" /> <receiver android:name="com.toscl.location.hengfeng.receiver.AlarmReceiver" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -34,16 +34,16 @@ public class NavActivity extends Activity implements View.OnClickListener { ...@@ -34,16 +34,16 @@ public class NavActivity extends Activity implements View.OnClickListener {
startActivity(new Intent(this, ServiceInfoActivity.class)); startActivity(new Intent(this, ServiceInfoActivity.class));
break; break;
case R.id.service_setting: case R.id.service_setting:
if (PreferencesUtil.getInstance(this).getBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false) // if (PreferencesUtil.getInstance(this).getBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false)
&& PhoneUtils.hengdaServiceAvailable()) { // && PhoneUtils.hengdaServiceAvailable()) {
startActivity(new Intent(this, ServiceSettingActivity.class)); startActivity(new Intent(this, ServiceSettingActivity.class));
} else { // } else {
Toast.makeText(this, getString(R.string.toast_tips_unavailable), Toast.LENGTH_SHORT).show(); // Toast.makeText(this, getString(R.string.toast_tips_unavailable), Toast.LENGTH_SHORT).show();
} // }
break; break;
case R.id.service_stop: case R.id.service_stop:
if (PreferencesUtil.getInstance(this).getBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false) if (PreferencesUtil.getInstance(this).getBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false)
&& PhoneUtils.hengdaServiceAvailable()) { && PhoneUtils.hengdaServiceAvailable(this)) {
startActivity(new Intent(this, ServiceStopActivity.class)); startActivity(new Intent(this, ServiceStopActivity.class));
} else { } else {
Toast.makeText(this, getString(R.string.toast_tips_unavailable), Toast.LENGTH_SHORT).show(); Toast.makeText(this, getString(R.string.toast_tips_unavailable), Toast.LENGTH_SHORT).show();
......
package com.toscl.location.hengfeng.activity; package com.toscl.location.hengfeng.activity;
import android.app.Activity; import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Toast; import android.widget.Toast;
...@@ -9,6 +16,7 @@ import android.widget.Toast; ...@@ -9,6 +16,7 @@ import android.widget.Toast;
import com.toscl.location.hengfeng.R; import com.toscl.location.hengfeng.R;
import com.toscl.location.hengfeng.api.IotApi; import com.toscl.location.hengfeng.api.IotApi;
import com.toscl.location.hengfeng.api.IotNetApiCallback; import com.toscl.location.hengfeng.api.IotNetApiCallback;
import com.toscl.location.hengfeng.receiver.AlarmReceiver;
import com.toscl.location.hengfeng.util.PreferencesUtil; import com.toscl.location.hengfeng.util.PreferencesUtil;
import com.toscl.location.hengfeng.util.PhoneUtils; import com.toscl.location.hengfeng.util.PhoneUtils;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
...@@ -27,6 +35,13 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen ...@@ -27,6 +35,13 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen
setContentView(R.layout.service_apply); setContentView(R.layout.service_apply);
setTitle(getString(R.string.title_apply)); setTitle(getString(R.string.title_apply));
/*
* has sim card ?
* */
if (PhoneUtils.getSubId(this, PreferencesUtil.HENG_FENG_DEFAULT_SLOT) == SubscriptionManager.INVALID_SUBSCRIPTION_ID){
Toast.makeText(this, getResources().getString(R.string.location_service_failed_tips), Toast.LENGTH_SHORT).show();
return;
}
mPhoneNumber = findViewById(R.id.phone_number); mPhoneNumber = findViewById(R.id.phone_number);
mPhoneNumber.setText(PhoneUtils.getLocalNumber(this, PreferencesUtil.HENG_FENG_DEFAULT_SLOT)); mPhoneNumber.setText(PhoneUtils.getLocalNumber(this, PreferencesUtil.HENG_FENG_DEFAULT_SLOT));
...@@ -51,7 +66,12 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen ...@@ -51,7 +66,12 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen
JSONObject jsonBody = new JSONObject(); JSONObject jsonBody = new JSONObject();
try { try {
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_MEID, PhoneUtils.getPhoneMEID(getApplicationContext())); jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_MEID, PhoneUtils.getPhoneMEID(getApplicationContext()));
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_IMSI, PhoneUtils.getSubId(getApplicationContext(), PreferencesUtil.HENG_FENG_DEFAULT_SLOT));
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_IMSI,
PhoneUtils.getMccMnc(getApplicationContext(),
PhoneUtils.getSubId(getApplicationContext(),
PreferencesUtil.HENG_FENG_DEFAULT_SLOT)));
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_TEL, phoneNumber); jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_TEL, phoneNumber);
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_TIME, System.currentTimeMillis()); jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_TIME, System.currentTimeMillis());
jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_SIGN, PhoneUtils.getHengdaSign(jsonBody)); jsonBody.put(PreferencesUtil.HENG_FENG_REQ_SERVER_SIGN, PhoneUtils.getHengdaSign(jsonBody));
...@@ -66,8 +86,6 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen ...@@ -66,8 +86,6 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen
int code = resp.get(PreferencesUtil.HENG_FENG_SERVER_CODE).getAsInt(); int code = resp.get(PreferencesUtil.HENG_FENG_SERVER_CODE).getAsInt();
String msg = resp.get(PreferencesUtil.HENG_FENG_SERVER_MSG).getAsString(); String msg = resp.get(PreferencesUtil.HENG_FENG_SERVER_MSG).getAsString();
Toast.makeText(ServiceApplyActivity.this, msg, Toast.LENGTH_SHORT).show();
if (code == 0) { if (code == 0) {
JsonObject data = resp.get(PreferencesUtil.HENG_FENG_SERVER_RESPONSE_DATA).getAsJsonObject(); JsonObject data = resp.get(PreferencesUtil.HENG_FENG_SERVER_RESPONSE_DATA).getAsJsonObject();
...@@ -90,9 +108,17 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen ...@@ -90,9 +108,17 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen
PreferencesUtil.getInstance(getApplicationContext()) PreferencesUtil.getInstance(getApplicationContext())
.putString(PreferencesUtil.HENG_FENG_DATA_END, dataEnd); .putString(PreferencesUtil.HENG_FENG_DATA_END, dataEnd);
PreferencesUtil.getInstance(getApplicationContext()) PreferencesUtil.getInstance(getApplicationContext())
.putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, true); .putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, true);
cancelPreviousAlarmService();
sendBroadcastForNextStartService();
Toast.makeText(ServiceApplyActivity.this, getString(R.string.apply_tips_success), Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(ServiceApplyActivity.this, msg, Toast.LENGTH_SHORT).show();
} }
} }
...@@ -106,4 +132,24 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen ...@@ -106,4 +132,24 @@ public class ServiceApplyActivity extends Activity implements View.OnClickListen
} }
}); });
} }
private void sendBroadcastForNextStartService() {
Intent intentStartLocationService = new Intent(PhoneUtils.HENFENG_BROADCAST_OPEN_ALARM);
intentStartLocationService.addFlags(PhoneUtils.FLAG_RECEIVER_INCLUDE_BACKGROUND);
getApplicationContext().sendBroadcast(intentStartLocationService);
}
private void cancelPreviousAlarmService() {
AlarmManager manger = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmReceiverIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent alarmReceiverPendingIntent =
PendingIntent.getBroadcast(getApplicationContext(), 0, alarmReceiverIntent, 0);
try {
manger.cancel(alarmReceiverPendingIntent);
Log.d(TAG, "alarm is canceled.");
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "alarm cancel exception: " + e.toString());
}
}
} }
...@@ -2,7 +2,12 @@ package com.toscl.location.hengfeng.activity; ...@@ -2,7 +2,12 @@ package com.toscl.location.hengfeng.activity;
import android.app.Activity; import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
...@@ -14,6 +19,7 @@ import com.google.gson.JsonParser; ...@@ -14,6 +19,7 @@ import com.google.gson.JsonParser;
import com.toscl.location.hengfeng.R; import com.toscl.location.hengfeng.R;
import com.toscl.location.hengfeng.api.IotApi; import com.toscl.location.hengfeng.api.IotApi;
import com.toscl.location.hengfeng.api.IotNetApiCallback; import com.toscl.location.hengfeng.api.IotNetApiCallback;
import com.toscl.location.hengfeng.receiver.AlarmReceiver;
import com.toscl.location.hengfeng.util.PhoneUtils; import com.toscl.location.hengfeng.util.PhoneUtils;
import com.toscl.location.hengfeng.util.PreferencesUtil; import com.toscl.location.hengfeng.util.PreferencesUtil;
...@@ -76,14 +82,15 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList ...@@ -76,14 +82,15 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList
mSpinnerForStartDate.setAdapter(adapter); mSpinnerForStartDate.setAdapter(adapter);
mSpinnerForEndDate = findViewById(R.id.service_upload_end); mSpinnerForEndDate = findViewById(R.id.service_upload_end);
mSpinnerForEndDate.setAdapter(adapter); mSpinnerForEndDate.setAdapter(adapter);
mSpinnerForEndDate.setSelection(PreferencesUtil.getInstance(this)
mSpinnerForStartDate.setSelection(PreferencesUtil.getInstance(this)
.getInt(PreferencesUtil.HENG_FENG_BEGIN, PreferencesUtil.HENG_FENG_DEFAULT_BEGIN)); .getInt(PreferencesUtil.HENG_FENG_BEGIN, PreferencesUtil.HENG_FENG_DEFAULT_BEGIN));
mSpinnerForEndDate.setSelection(PreferencesUtil.getInstance(this) mSpinnerForEndDate.setSelection(PreferencesUtil.getInstance(this)
.getInt(PreferencesUtil.HENG_FENG_END, PreferencesUtil.HENG_FENG_DEFAULT_END)); .getInt(PreferencesUtil.HENG_FENG_END, PreferencesUtil.HENG_FENG_DEFAULT_END));
} }
@Override @Override
public void onClick(View v) { public void onClick(View v) {
switch (v.getId()) { switch (v.getId()) {
...@@ -135,9 +142,15 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList ...@@ -135,9 +142,15 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList
PreferencesUtil.getInstance(getApplicationContext()) PreferencesUtil.getInstance(getApplicationContext())
.putInt(PreferencesUtil.HENG_FENG_FREQUENCY, frequency); .putInt(PreferencesUtil.HENG_FENG_FREQUENCY, frequency);
}
Toast.makeText(ServiceSettingActivity.this, msg, Toast.LENGTH_SHORT).show(); cancelPreviousAlarmService();
sendBroadcastForNextStartService();
Toast.makeText(ServiceSettingActivity.this, getString(R.string.setting_tips_success), Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(ServiceSettingActivity.this, msg, Toast.LENGTH_SHORT).show();
}
} }
@Override @Override
...@@ -148,5 +161,24 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList ...@@ -148,5 +161,24 @@ public class ServiceSettingActivity extends Activity implements View.OnClickList
}); });
} }
private void sendBroadcastForNextStartService() {
Intent intentStartLocationService = new Intent(PhoneUtils.HENFENG_BROADCAST_OPEN_ALARM);
intentStartLocationService.addFlags(PhoneUtils.FLAG_RECEIVER_INCLUDE_BACKGROUND);
getApplicationContext().sendBroadcast(intentStartLocationService);
}
private void cancelPreviousAlarmService() {
AlarmManager manger = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmReceiverIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent alarmReceiverPendingIntent =
PendingIntent.getBroadcast(getApplicationContext(), 0, alarmReceiverIntent, 0);
try {
manger.cancel(alarmReceiverPendingIntent);
Log.d(TAG, "alarm is canceled.");
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "alarm cancel exception: " + e.toString());
}
}
} }
package com.toscl.location.hengfeng.activity; package com.toscl.location.hengfeng.activity;
import android.app.Activity; import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
...@@ -11,6 +17,7 @@ import com.google.gson.JsonParser; ...@@ -11,6 +17,7 @@ import com.google.gson.JsonParser;
import com.toscl.location.hengfeng.R; import com.toscl.location.hengfeng.R;
import com.toscl.location.hengfeng.api.IotApi; import com.toscl.location.hengfeng.api.IotApi;
import com.toscl.location.hengfeng.api.IotNetApiCallback; import com.toscl.location.hengfeng.api.IotNetApiCallback;
import com.toscl.location.hengfeng.receiver.AlarmReceiver;
import com.toscl.location.hengfeng.util.PhoneUtils; import com.toscl.location.hengfeng.util.PhoneUtils;
import com.toscl.location.hengfeng.util.PreferencesUtil; import com.toscl.location.hengfeng.util.PreferencesUtil;
...@@ -20,6 +27,7 @@ import org.json.JSONObject; ...@@ -20,6 +27,7 @@ import org.json.JSONObject;
public class ServiceStopActivity extends Activity implements View.OnClickListener { public class ServiceStopActivity extends Activity implements View.OnClickListener {
private EditText mEtPhoneNumber; private EditText mEtPhoneNumber;
private final String TAG = getClass().getName();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -29,6 +37,9 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene ...@@ -29,6 +37,9 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene
findViewById(R.id.bt_cancel).setOnClickListener(this); findViewById(R.id.bt_cancel).setOnClickListener(this);
findViewById(R.id.bt_save).setOnClickListener(this); findViewById(R.id.bt_save).setOnClickListener(this);
TextView txStopTips = findViewById(R.id.service_stop_tips);
txStopTips.setText(String.format(getResources().getString(R.string.service_stop_tips), PreferencesUtil.getInstance(this).getString(PreferencesUtil.HENG_FENG_PHONE, "")));
mEtPhoneNumber = findViewById(R.id.phone_number); mEtPhoneNumber = findViewById(R.id.phone_number);
} }
...@@ -75,6 +86,9 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene ...@@ -75,6 +86,9 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene
if (code == 0){ if (code == 0){
PreferencesUtil.getInstance(getApplicationContext()).putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false); PreferencesUtil.getInstance(getApplicationContext()).putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false);
cancelPreviousAlarmService();
finish();
} }
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
} }
...@@ -87,4 +101,19 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene ...@@ -87,4 +101,19 @@ public class ServiceStopActivity extends Activity implements View.OnClickListene
}); });
} }
private void cancelPreviousAlarmService() {
AlarmManager manger = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmReceiverIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent alarmReceiverPendingIntent =
PendingIntent.getBroadcast(getApplicationContext(), 0, alarmReceiverIntent, 0);
try {
manger.cancel(alarmReceiverPendingIntent);
Log.d(TAG, "alarm is canceled.");
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "alarm cancel exception: " + e.toString());
}
}
} }
...@@ -14,11 +14,6 @@ import okhttp3.Request; ...@@ -14,11 +14,6 @@ import okhttp3.Request;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.Response; import okhttp3.Response;
/**
* Created by ShiCuiliang on 2018/4/8.
* IotApi for handler get|post api url content.
*/
public class IotApi { public class IotApi {
public static final String LOG_TAG = "IotApi"; public static final String LOG_TAG = "IotApi";
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
...@@ -28,8 +23,7 @@ public class IotApi { ...@@ -28,8 +23,7 @@ public class IotApi {
private static final int TIME_OUT_WRITE = 10; private static final int TIME_OUT_WRITE = 10;
private static final int TIME_OUT_READ = 10; private static final int TIME_OUT_READ = 10;
private static final int TIME_OUT_CONNECT = 10; private static final int TIME_OUT_CONNECT = 10;
private static String TAG = "API"; private static String TAG = "IotApi";
/** /**
* Init http client with token header. * Init http client with token header.
...@@ -90,7 +84,6 @@ public class IotApi { ...@@ -90,7 +84,6 @@ public class IotApi {
post("https://api.vserve365.com/phone_baihe/config", requestContent.toString(), callback); post("https://api.vserve365.com/phone_baihe/config", requestContent.toString(), callback);
} }
private static Interceptor sTokenInterceptor = new Interceptor() { private static Interceptor sTokenInterceptor = new Interceptor() {
@Override @Override
......
package com.toscl.location.hengfeng.recevier; package com.toscl.location.hengfeng.receiver;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log; import android.util.Log;
import com.toscl.location.hengfeng.util.PhoneUtils;
public class AlarmReceiver extends BroadcastReceiver { public class AlarmReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
Log.d("AlarmReceiver", "sendBroadcast com.bird.open_gps_alarm"); Log.d("AlarmReceiver", "sendBroadcast com.bird.open_gps_alarm");
Intent intent2 = new Intent("com.bird.open_gps_alarm"); Intent intentStartLocationService = new Intent(PhoneUtils.HENFENG_BROADCAST_OPEN_ALARM);
intent2.addFlags(0x01000000); intentStartLocationService.addFlags(PhoneUtils.FLAG_RECEIVER_INCLUDE_BACKGROUND);
context.sendBroadcast(intent2); context.sendBroadcast(intentStartLocationService);
} }
} }
package com.toscl.location.hengfeng.recevier; package com.toscl.location.hengfeng.receiver;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
...@@ -22,9 +22,9 @@ public class LocationReceiver extends BroadcastReceiver { ...@@ -22,9 +22,9 @@ public class LocationReceiver extends BroadcastReceiver {
if (action != null && action.equals("com.bird.send_sos")) { if (action != null && action.equals("com.bird.send_sos")) {
if (PreferencesUtil.getInstance(context) if (PreferencesUtil.getInstance(context)
.getBoolean(PreferencesUtil.HENG_FENG_PREFIX + "is_open", false)) { .getBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false)) {
if (PhoneUtils.hengdaServiceAvailable()) { if (PhoneUtils.hengdaServiceAvailable(context)) {
Intent intentForService = new Intent(context, LocationService.class); Intent intentForService = new Intent(context, LocationService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
...@@ -34,10 +34,10 @@ public class LocationReceiver extends BroadcastReceiver { ...@@ -34,10 +34,10 @@ public class LocationReceiver extends BroadcastReceiver {
} }
PreferencesUtil.getInstance(context) PreferencesUtil.getInstance(context)
.putBoolean(PreferencesUtil.HENG_FENG_PREFIX + "is_open", true); .putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, true);
} else { } else {
PreferencesUtil.getInstance(context) PreferencesUtil.getInstance(context)
.putBoolean(PreferencesUtil.HENG_FENG_PREFIX + "is_open", false); .putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false);
Intent intentThree = new Intent(context, LocationService.class); Intent intentThree = new Intent(context, LocationService.class);
context.stopService(intentThree); context.stopService(intentThree);
...@@ -47,7 +47,7 @@ public class LocationReceiver extends BroadcastReceiver { ...@@ -47,7 +47,7 @@ public class LocationReceiver extends BroadcastReceiver {
} else if (action != null && action.equals("com.bird.close_sos")) { } else if (action != null && action.equals("com.bird.close_sos")) {
PreferencesUtil.getInstance(context) PreferencesUtil.getInstance(context)
.putBoolean(PreferencesUtil.HENG_FENG_PREFIX + "is_open", false); .putBoolean(PreferencesUtil.HENG_FENG_IS_OEPN, false);
Intent intentThree = new Intent(context, LocationService.class); Intent intentThree = new Intent(context, LocationService.class);
context.stopService(intentThree); context.stopService(intentThree);
......
...@@ -20,8 +20,12 @@ import org.json.JSONObject; ...@@ -20,8 +20,12 @@ import org.json.JSONObject;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
...@@ -38,10 +42,12 @@ public class PhoneUtils { ...@@ -38,10 +42,12 @@ public class PhoneUtils {
public static final String HENFENG_BROADCAST_OPEN_GPS = "com.bird.open_gps_switch"; public static final String HENFENG_BROADCAST_OPEN_GPS = "com.bird.open_gps_switch";
public static final String HENFENG_BROADCAST_CLOSE_GPS = "com.bird.close_gps_switch"; public static final String HENFENG_BROADCAST_CLOSE_GPS = "com.bird.close_gps_switch";
public static final String HENFENG_BROADCAST_OPEN_ALARM = "com.bird.open_gps_alarm";
public static final int FLAG_RECEIVER_INCLUDE_BACKGROUND = 0x01000000;
private static final String TAG = PhoneUtils.class.getSimpleName(); private static final String TAG = "PhoneUtils";
private static final ArrayMap<String, String> mobileAlias = new ArrayMap<>(); private static final ArrayMap<String, String> mobileAlias = new ArrayMap<>();
private static boolean mDebugTest = true; private static boolean mDebugTest = false;
public static int getSimState(int slot) { public static int getSimState(int slot) {
int state = -1; int state = -1;
...@@ -239,11 +245,111 @@ public class PhoneUtils { ...@@ -239,11 +245,111 @@ public class PhoneUtils {
} }
} }
}
public static boolean hengdaServiceAvailable(Context context) {
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(format);
String currentDateTime = sf.format(new Date());
String dateStart = PreferencesUtil.getInstance(context)
.getString(PreferencesUtil.HENG_FENG_DATA_START, "");
String dateEnd = PreferencesUtil.getInstance(context)
.getString(PreferencesUtil.HENG_FENG_DATA_END, "");
boolean runFlag = false;
try {
Date nowTime = new SimpleDateFormat(format).parse(currentDateTime);
Date startTime = new SimpleDateFormat(format).parse(dateStart + " 00:00:00");
Date endTime = new SimpleDateFormat(format).parse(dateEnd + " 00:00:00");
if (isEffectiveDate(nowTime, startTime, endTime)) {
runFlag = true;
}
} catch (java.text.ParseException e) {
e.printStackTrace();
}
Log.d(TAG, "hengdaServiceAvailable : runFlag: " + runFlag);
return runFlag;
} }
public static boolean hengdaServiceAvailable() { public static int getNextDateStartInterval(Context context) {
return true; int interval = 10;
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(format);
String currentDateTime = sf.format(new Date());
String dateStart = PreferencesUtil.getInstance(context)
.getString(PreferencesUtil.HENG_FENG_DATA_START, "");
try {
Date nowTime = new SimpleDateFormat(format).parse(currentDateTime);
Date startTime = new SimpleDateFormat(format).parse(dateStart + " 00:00:00");
interval = (int) ((startTime.getTime() - nowTime.getTime())/1000/60);
} catch (ParseException e) {
e.printStackTrace();
}
Log.d(TAG, "getNextDateStartInterval: interval:" + interval);
return interval;
}
public static boolean isCurrentTimeInThePeriod(Context context) {
String format = "HH:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(format);
String currentDateTime = sf.format(new Date());
boolean runFlag = false;
try {
Date nowTime = new SimpleDateFormat(format).parse(currentDateTime);
int begin = PreferencesUtil.getInstance(context)
.getInt(PreferencesUtil.HENG_FENG_BEGIN, PreferencesUtil.HENG_FENG_DEFAULT_BEGIN);
int end = PreferencesUtil.getInstance(context)
.getInt(PreferencesUtil.HENG_FENG_BEGIN, PreferencesUtil.HENG_FENG_DEFAULT_END);
Date startTime = new SimpleDateFormat(format).parse(begin + ":00:00");
Date endTime = new SimpleDateFormat(format).parse(end + ":00:00");
if (isEffectiveDate(nowTime, startTime, endTime)) {
runFlag = true;
}
} catch (java.text.ParseException e) {
e.printStackTrace();
}
Log.d(TAG, "isCurrentTimeInThePeriod - runFlag: " + runFlag);
return runFlag;
}
private static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
return date.after(begin) && date.before(end);
} }
public boolean isAirplaneModeOn(Context context) { public boolean isAirplaneModeOn(Context context) {
...@@ -439,17 +545,14 @@ public class PhoneUtils { ...@@ -439,17 +545,14 @@ public class PhoneUtils {
// int[] subIds = SubscriptionManager.getSubId(slotId); // int[] subIds = SubscriptionManager.getSubId(slotId);
// return null != subIds && subIds.length > 0 ? subIds[0] : SubscriptionManager.INVALID_SUBSCRIPTION_ID; // return null != subIds && subIds.length > 0 ? subIds[0] : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
// } // }
public static String getSubId(Context context, int slotId) { public static int getSubId(Context context, int slotId) {
if (mDebugTest){
return "111111111";
}
final SubscriptionManager subscriptionManager = SubscriptionManager.from(context); final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
final SubscriptionInfo sir = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(slotId); final SubscriptionInfo sir = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(slotId);
int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
if (sir != null) { if (sir != null) {
subId = sir.getSubscriptionId(); subId = sir.getSubscriptionId();
} }
return String.valueOf(subId); return subId;
} }
public static String getMccMnc(Context context, int subId) { public static String getMccMnc(Context context, int subId) {
...@@ -483,7 +586,7 @@ public class PhoneUtils { ...@@ -483,7 +586,7 @@ public class PhoneUtils {
} }
public static String getPhoneMEID(Context context) { public static String getPhoneMEID(Context context) {
if (mDebugTest){ if (mDebugTest) {
return "A1000064110C89"; return "A1000064110C89";
} }
//实例化TelephonyManager对象 //实例化TelephonyManager对象
......
...@@ -4,6 +4,9 @@ import android.annotation.TargetApi; ...@@ -4,6 +4,9 @@ import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.util.Log;
import com.toscl.location.hengfeng.api.IotApi;
import java.util.Set; import java.util.Set;
...@@ -12,7 +15,6 @@ public class PreferencesUtil { ...@@ -12,7 +15,6 @@ public class PreferencesUtil {
/* /*
* server request key * server request key
* */ * */
public final static String HENG_FENG_REQ_SERVER_MEID = "meid"; public final static String HENG_FENG_REQ_SERVER_MEID = "meid";
public final static String HENG_FENG_REQ_SERVER_IMSI = "imsi"; public final static String HENG_FENG_REQ_SERVER_IMSI = "imsi";
public final static String HENG_FENG_REQ_SERVER_TEL = "tel"; public final static String HENG_FENG_REQ_SERVER_TEL = "tel";
...@@ -63,6 +65,7 @@ public class PreferencesUtil { ...@@ -63,6 +65,7 @@ public class PreferencesUtil {
private static PreferencesUtil sDevicePreferences; private static PreferencesUtil sDevicePreferences;
private final SharedPreferences mSharePferences; private final SharedPreferences mSharePferences;
private final SharedPreferences.Editor mEditor; private final SharedPreferences.Editor mEditor;
private final String TAG = "PreferencesUtil";
private PreferencesUtil(Context context) { private PreferencesUtil(Context context) {
mSharePferences = context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE); mSharePferences = context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
...@@ -77,6 +80,9 @@ public class PreferencesUtil { ...@@ -77,6 +80,9 @@ public class PreferencesUtil {
} }
public void putInt(final String key, final int value) { public void putInt(final String key, final int value) {
if (IotApi.sDebug) {
Log.d(TAG, "putInt key:" + key + ", value: " + value);
}
mEditor.putInt(key, value); mEditor.putInt(key, value);
mEditor.commit(); mEditor.commit();
} }
...@@ -87,6 +93,9 @@ public class PreferencesUtil { ...@@ -87,6 +93,9 @@ public class PreferencesUtil {
} }
public void putString(final String key, final String value) { public void putString(final String key, final String value) {
if (IotApi.sDebug) {
Log.d(TAG, "putString key:" + key + ", value: " + value);
}
mEditor.putString(key, value); mEditor.putString(key, value);
mEditor.commit(); mEditor.commit();
} }
...@@ -97,6 +106,9 @@ public class PreferencesUtil { ...@@ -97,6 +106,9 @@ public class PreferencesUtil {
} }
public void putBoolean(final String key, final boolean value) { public void putBoolean(final String key, final boolean value) {
if (IotApi.sDebug) {
Log.d(TAG, "putBoolean key:" + key + ", value: " + value);
}
mEditor.putBoolean(key, value); mEditor.putBoolean(key, value);
mEditor.commit(); mEditor.commit();
} }
...@@ -108,7 +120,11 @@ public class PreferencesUtil { ...@@ -108,7 +120,11 @@ public class PreferencesUtil {
} }
public int getInt(final String key, final int defaultValue) { public int getInt(final String key, final int defaultValue) {
return mSharePferences.getInt(key, defaultValue); int value = mSharePferences.getInt(key, defaultValue);
if (IotApi.sDebug) {
Log.d(TAG, "getInt key:" + key + ", defaultValue: " + defaultValue + ", value: " + value);
}
return value;
} }
public long getLong(final String key, final long defaultValue) { public long getLong(final String key, final long defaultValue) {
...@@ -116,7 +132,11 @@ public class PreferencesUtil { ...@@ -116,7 +132,11 @@ public class PreferencesUtil {
} }
public String getString(final String key, final String defaultValue) { public String getString(final String key, final String defaultValue) {
return mSharePferences.getString(key, defaultValue); String value = mSharePferences.getString(key, defaultValue);
if (IotApi.sDebug) {
Log.d(TAG, "getString key:" + key + ", defaultValue: " + defaultValue + ", value: " + value);
}
return value;
} }
public float getFloat(final String key, final float defaultValue) { public float getFloat(final String key, final float defaultValue) {
...@@ -124,7 +144,11 @@ public class PreferencesUtil { ...@@ -124,7 +144,11 @@ public class PreferencesUtil {
} }
public boolean getBoolean(final String key, final boolean defaultValue) { public boolean getBoolean(final String key, final boolean defaultValue) {
return mSharePferences.getBoolean(key, defaultValue); boolean value = mSharePferences.getBoolean(key, defaultValue);
if (IotApi.sDebug){
Log.d(TAG, "getBoolean key:" + key + ", defaultValue: " + defaultValue + ", value: " + value);
}
return value;
} }
public Set<String> getStringSet(final String key) { public Set<String> getStringSet(final String key) {
......
...@@ -139,14 +139,13 @@ ...@@ -139,14 +139,13 @@
<LinearLayout <LinearLayout
style="@style/InputBoxStyle" style="@style/InputBoxStyle"
android:layout_marginLeft="5px"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<EditText <EditText
android:id="@+id/service_available_date" android:id="@+id/service_available_date"
android:cursorVisible="true"
android:hint="@string/time_inter_tips"
android:textCursorDrawable="@color/colorPrimary" android:textCursorDrawable="@color/colorPrimary"
android:text="从 2019.10.1 到 2021.9.30" android:text=""
android:textStyle="bold" android:textStyle="bold"
android:focusable="false" android:focusable="false"
android:focusableInTouchMode="false" android:focusableInTouchMode="false"
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/service_stop_tips"
android:layout_gravity="center" android:layout_gravity="center"
android:textSize="22px" android:textSize="22px"
android:padding="10px" android:padding="10px"
...@@ -25,10 +26,11 @@ ...@@ -25,10 +26,11 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<EditText <EditText
android:id="@+id/phone_number"
android:cursorVisible="true" android:cursorVisible="true"
android:hint="输入手机号码" android:hint="输入手机号码"
android:textCursorDrawable="@color/colorPrimary" android:textCursorDrawable="@color/colorPrimary"
android:text="0" android:text=""
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:minWidth="330px" android:minWidth="330px"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string-array name="date"> <string-array name="date">
<item>0点</item>
<item>1点</item> <item>1点</item>
<item>2点</item> <item>2点</item>
<item>3点</item> <item>3点</item>
...@@ -24,6 +25,5 @@ ...@@ -24,6 +25,5 @@
<item>21点</item> <item>21点</item>
<item>22点</item> <item>22点</item>
<item>23点</item> <item>23点</item>
<item>24点</item>
</string-array> </string-array>
</resources> </resources>
\ No newline at end of file
...@@ -10,28 +10,36 @@ ...@@ -10,28 +10,36 @@
<string name="error_msg_1">"Latitude and longitude information is invalid"</string> <string name="error_msg_1">"Latitude and longitude information is invalid"</string>
<string name="error_msg_2">"Invalid MEID"</string> <string name="error_msg_2">"Invalid MEID"</string>
<string name="error_msg_3">"Internal processing error"</string> <string name="error_msg_3">"Internal processing error"</string>
<string name="save_tips" translatable="false">保存成功</string> <string name="save_tips" translatable="false">保存成功</string>
<string name="save_cacel">取消</string> <string name="save_cacel" translatable="false">取消</string>
<string name="time_inter_tips">请输入时间间隔</string> <string name="time_inter_tips" translatable="false">请输入时间间隔</string>
<string name="server_tips">请输入当前服务器接口地址</string> <string name="server_tips" translatable="false">请输入当前服务器接口地址</string>
<string name="user_tips_title">使用说明:</string> <string name="user_tips_title" translatable="false">使用说明:</string>
<string name="user_tips_content">每次重启开机后均会发送定位信息,可保存后重启手机测试。</string> <string name="user_tips_content" translatable="false">每次重启开机后均会发送定位信息,可保存后重启手机测试。</string>
<string name="other_tips">测试接口: http://202.100.179.139:8088/api 正式接口: http://202.100.190.58:8090/api/cstmzPosition</string> <string name="other_tips" translatable="false">测试接口: http://202.100.179.139:8088/api 正式接口: http://202.100.190.58:8090/api/cstmzPosition</string>
<string name="service_info">\t本定位服务面向在通信运营商处申请开通了特定套餐的用户。\n\t当您进行了“申请开通”的操作后,即表示您在套餐服务有效的时间段内授权本服务获取您的位置。\n\t请您下载“颐关爱”APP查看本手机的定位信息、设置电子围栏范围、收取跨越电子围栏的报警信息。\t本定位的准确性和及时性与手机性能、定位信号强度、信息上传频率、网络情况等诸多因素有关,故本定位服务只起到辅助监护作用,不承担因定位不准确或不及时导致的任何责任,特此声明。</string> <!-- hengfeng -->
<string name="title_nav">定位服务</string> <string name="service_info" translatable="false">\t本定位服务面向在通信运营商处申请开通了特定套餐的用户。\n\t当您进行了“申请开通”的操作后,即表示您在套餐服务有效的时间段内授权本服务获取您的位置。\n\t请您下载“颐关爱”APP查看本手机的定位信息、设置电子围栏范围、收取跨越电子围栏的报警信息。\t本定位的准确性和及时性与手机性能、定位信号强度、信息上传频率、网络情况等诸多因素有关,故本定位服务只起到辅助监护作用,不承担因定位不准确或不及时导致的任何责任,特此声明。</string>
<string name="toast_tips_unavailable">未开通定位服务</string> <string name="title_nav" translatable="false">定位服务</string>
<string name="title_server_info">服务说明</string> <string name="toast_tips_unavailable" translatable="false">未开通定位服务</string>
<string name="title_apply">申请开通</string> <string name="title_server_info" translatable="false">服务说明</string>
<string name="server_status_unavailable">服务未开通</string> <string name="title_apply" translatable="false">申请开通</string>
<string name="service_available_date">从 %s 到 %s</string> <string name="server_status_unavailable" translatable="false">服务未开通</string>
<string name="service_status_available">开通</string> <string name="service_available_date" translatable="false">从 %s 到 %s</string>
<string name="service_status_unavailable">停止</string> <string name="service_status_available" translatable="false">开通</string>
<string name="service_status_unavailable" translatable="false">停止</string>
<string name="title_service_setting" translatable="false">定位设置</string> <string name="title_service_setting" translatable="false">定位设置</string>
<string name="tips_input_unvaild">输入不合法</string> <string name="tips_input_unvaild" translatable="false">输入不合法</string>
<string name="tips_frequency_unvalid">上传频率请设置 1-1440 之间</string> <string name="tips_frequency_unvalid" translatable="false">上传频率请设置 1-1440 之间</string>
<string name="tips_save_success">保存成功</string> <string name="tips_save_success" translatable="false">保存成功</string>
<string name="tips_phone_unvalid">套餐手机号输入错误,请重新输入</string> <string name="tips_phone_unvalid" translatable="false">套餐手机号输入错误,请重新输入</string>
<string name="tips_service_stop">定位服务已停止</string> <string name="tips_service_stop" translatable="false">定位服务已停止</string>
<string name="title_server_stop">停止服务</string> <string name="title_server_stop" translatable="false">停止服务</string>
<string name="toast_tips_server_unavailable">服务器连接错误,请重试</string> <string name="toast_tips_server_unavailable" translatable="false">服务器连接错误,请重试</string>
<!--<string name="location_service_failed_tips">当前未插入SIM卡,定位服务启动失败</string>-->
<string name="location_service_failed_tips" translatable="false">请在卡槽1中插入SIM卡后重试</string>
<string name="service_stop_tips" translatable="false">您在营业厅申请的套餐手机号为:%s,请再次输入该号码以确认停止定位服务</string>
<string name="apply_tips_success" translatable="false">申请开通成功</string>
<string name="setting_tips_success" translatable="false">设置成功</string>
<string name="location_server_unavailable" translatable="false">定位失败,当前服务不在有效期内</string>
</resources> </resources>
<resources> <resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar"> <style name="AppTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item> <item name="colorAccent">@color/colorAccent</item>
...@@ -12,6 +10,7 @@ ...@@ -12,6 +10,7 @@
<item name="android:layout_centerHorizontal">true</item> <item name="android:layout_centerHorizontal">true</item>
<item name="android:layout_marginLeft">18dp</item> <item name="android:layout_marginLeft">18dp</item>
<item name="android:layout_marginRight">18dp</item> <item name="android:layout_marginRight">18dp</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:background">@drawable/border_input_box</item> <item name="android:background">@drawable/border_input_box</item>
<item name="android:gravity">center</item> <item name="android:gravity">center</item>
<item name="android:orientation">horizontal</item> <item name="android:orientation">horizontal</item>
......
No preview for this file type
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!