新增sim卡切换

新增短信监听
serial
liuguijing 2 years ago
parent 1bd3fadd52
commit 050e662d7c

@ -65,7 +65,7 @@ dependencies {
// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

@ -31,6 +31,8 @@
<uses-permission android:name="android.permission.DEVICE_POWER" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.DEVICE_POWER" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera" />
<application <application
@ -43,7 +45,6 @@
android:theme="@style/Theme.MicroPhoto" android:theme="@style/Theme.MicroPhoto"
tools:targetApi="28"> tools:targetApi="28">
<service <service
android:name=".MicroPhotoService" android:name=".MicroPhotoService"
android:enabled="true" android:enabled="true"
@ -77,6 +78,11 @@
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name=".SmsReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity <activity

@ -54,6 +54,7 @@ find_package(ncnn REQUIRED)
SET(YAMC_INC_DIR ${CMAKE_SOURCE_DIR}) SET(YAMC_INC_DIR ${CMAKE_SOURCE_DIR})
SET(TERM_CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../xymp/Core) SET(TERM_CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../xymp/Core)
#SET(TERM_CORE_ROOT D:/Workspace/xymp/Core)
SET(JSONCPP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp) SET(JSONCPP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp)
SET(JSONCPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/include) SET(JSONCPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/include)
@ -211,14 +212,14 @@ include_directories(${TERM_CORE_ROOT})
# include_directories(${PROJECT_SOURCE_DIR}/../../../../../libs/inc/) # include_directories(${PROJECT_SOURCE_DIR}/../../../../../libs/inc/)
add_library( # Sets the name of the library. #add_library( # Sets the name of the library.
evpp_lite # evpp_lite
#
# Sets the library as a shared library. # # Sets the library as a shared library.
STATIC # STATIC
#
# Provides a relative path to your source file(s). # # Provides a relative path to your source file(s).
${EVPP_SOURCES} ) # ${EVPP_SOURCES} )
IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")

@ -1,6 +1,7 @@
package com.xinyingpower.microphoto; package com.xinyingpower.microphoto;
import android.Manifest; import android.Manifest;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
@ -9,9 +10,13 @@ import android.os.Build;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.SystemClock; import android.os.SystemClock;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import android.view.Display; import android.view.Display;
import android.view.View; import android.view.View;
@ -22,6 +27,7 @@ import com.xinyingpower.microphoto.databinding.ActivityMainBinding;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@ -37,6 +43,7 @@ public class MainActivity extends AppCompatActivity {
} }
private ActivityMainBinding binding; private ActivityMainBinding binding;
private int defaultDataSubId;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -57,7 +64,7 @@ public class MainActivity extends AppCompatActivity {
public void onClick(View view) { public void onClick(View view) {
String[] accessPermissions = new String[] { String[] accessPermissions = new String[]{
Manifest.permission.CAMERA, Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.FOREGROUND_SERVICE, Manifest.permission.FOREGROUND_SERVICE,
@ -65,9 +72,9 @@ public class MainActivity extends AppCompatActivity {
/*Manifest.permission.SET_TIME,*/ /*Manifest.permission.SET_TIME,*/
}; };
boolean needRequire = false; boolean needRequire = false;
for(String access : accessPermissions) { for (String access : accessPermissions) {
int curPermission = ActivityCompat.checkSelfPermission(MainActivity.this, access); int curPermission = ActivityCompat.checkSelfPermission(MainActivity.this, access);
if(curPermission != PackageManager.PERMISSION_GRANTED) { if (curPermission != PackageManager.PERMISSION_GRANTED) {
needRequire = true; needRequire = true;
break; break;
} }
@ -106,6 +113,7 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
MicroPhotoService.takePhoto(MainActivity.this, 1, 255, true); MicroPhotoService.takePhoto(MainActivity.this, 1, 255, true);
// setDefaultDataSubId(1);
} }
}); });
@ -113,6 +121,7 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
MicroPhotoService.takePhoto(MainActivity.this, 2, 255, true); MicroPhotoService.takePhoto(MainActivity.this, 2, 255, true);
// setDefaultDataSubId(2);
} }
}); });
@ -132,8 +141,33 @@ public class MainActivity extends AppCompatActivity {
}); });
Handler handler=new Handler();
Runnable runnable=new Runnable(){ binding.simchange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
defaultDataSubId = getDefaultDataSubId();
System.out.println(defaultDataSubId);
}
});
binding.simchange2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (defaultDataSubId == 0) {
setDefaultDataSubId(1);
} else {
if (defaultDataSubId == 1) {
setDefaultDataSubId(2);
} else {
setDefaultDataSubId(1);
}
}
}
});
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override @Override
public void run() { public void run() {
binding.startServBtn.performClick(); binding.startServBtn.performClick();
@ -143,8 +177,32 @@ public class MainActivity extends AppCompatActivity {
} }
protected void takePhoto() private void setDefaultDataSubId(int subId) {
{ SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
try {
Method method = subscriptionManager.getClass().getDeclaredMethod("setDefaultDataSubId", int.class);
method.invoke(subscriptionManager, subId);
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Method method1 = telephonyManager.getClass().getDeclaredMethod("setDataEnabled", boolean.class);
method1.invoke(telephonyManager, true);
} catch (Exception e) {
Log.e(TAG, "wjz debug setDefaultDataSubId: error is " + e.getMessage());
}
}
private int getDefaultDataSubId() {
SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
try {
Method method = subscriptionManager.getClass().getDeclaredMethod("getDefaultDataSubscriptionId");
return (int) method.invoke(subscriptionManager);
} catch (Exception e) {
Log.e(TAG, "wjz debug getDefaultDataSubId: error is " + e.getMessage());
}
return 0;
}
protected void takePhoto() {
File path = Environment.getExternalStorageDirectory(); File path = Environment.getExternalStorageDirectory();
File file = new File(path, "photo.jpg"); File file = new File(path, "photo.jpg");
boolean res = false; boolean res = false;
@ -153,8 +211,7 @@ public class MainActivity extends AppCompatActivity {
res = DSCameraManager.getInstace().takePhoto(file.getAbsolutePath(), 2); res = DSCameraManager.getInstace().takePhoto(file.getAbsolutePath(), 2);
if (!res) if (!res) {
{
int aa = 0; int aa = 0;
} }

@ -0,0 +1,63 @@
package com.xinyingpower.microphoto;
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.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* 广
*
* @author jingjing
*/
public class SmsReceiver extends BroadcastReceiver {
private Context mContext;
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
public static final String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
@Override
public void onReceive(Context context, Intent intent) {
this.mContext = context;
Log.e("日志onReceive...", "-接收短信执行了" + intent.getStringExtra("sele"));
String action = intent.getAction();
if (SMS_RECEIVED_ACTION.equals(action) || SMS_DELIVER_ACTION.equals(action)) {
Log.e("日志onReceive。。。", "开始接收短信.....");
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
if (pdus != null && pdus.length > 0) {
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
byte[] pdu = (byte[]) pdus[i];
messages[i] = SmsMessage.createFromPdu(pdu);
}
for (SmsMessage message : messages) {
String content = message.getMessageBody();// 得到短信内容
String sender = message.getOriginatingAddress();// 得到发信息的号码
Date date = new Date(message.getTimestampMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
String dateContent = format.format(date);
// this.abortBroadcast();// 中止
}
}
}
}
}
}

@ -8,93 +8,109 @@
tools:context=".MainActivity"> tools:context=".MainActivity">
<TextView <TextView
android:id="@+id/sample_text" android:id="@+id/textView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Hello World!" android:layout_marginLeft="38dp"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="38dp"
app:layout_constraintEnd_toEndOf="parent" android:text="Server"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintVertical_bias="0.929" />
<EditText
android:id="@+id/server"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="114dp"
android:ems="10"
android:inputType=""
app:layout_constraintBottom_toBottomOf="@+id/textView"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="@+id/textView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="Port"
app:layout_constraintLeft_toLeftOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/port"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType=""
android:text="Name"
app:layout_constraintBottom_toBottomOf="@+id/textView2"
app:layout_constraintLeft_toLeftOf="@+id/server"
app:layout_constraintLeft_toRightOf="@+id/textView2"
app:layout_constraintTop_toTopOf="@+id/textView2" />
<Button <Button
android:id="@+id/stopServBtn" android:id="@+id/stopServBtn"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:layout_marginTop="16dp"
android:enabled="false" android:enabled="false"
android:text="Stop" android:text="Stop" />
app:layout_constraintStart_toEndOf="@+id/startServBtn"
app:layout_constraintTop_toBottomOf="@+id/port" />
<Button <Button
android:id="@+id/startServBtn" android:id="@+id/startServBtn"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="56dp" android:text="Start" />
android:layout_marginTop="16dp"
android:text="Start"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/port" />
<Button <Button
android:id="@+id/takePhotoBtn2" android:id="@+id/takePhotoBtn2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="208dp" android:text="Take Photo2" />
android:layout_marginTop="216dp"
android:text="Take Photo2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button <Button
android:id="@+id/takePhotoBtn" android:id="@+id/takePhotoBtn"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="56dp" android:text="Take Photo" />
android:layout_marginTop="216dp"
android:text="Take Photo"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText <Button
android:id="@+id/server" android:id="@+id/simchange"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="28dp" android:text="sim卡获取" />
android:ems="10"
android:inputType=""
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="114dp" />
<TextView <Button
android:id="@+id/textView" android:id="@+id/simchange2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Server" android:text="切换sim2" />
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="38dp" />
<TextView <androidx.constraintlayout.helper.widget.Flow
android:id="@+id/textView2" android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Port" android:layout_marginStart="16dp"
tools:layout_editor_absoluteX="19dp" android:layout_marginTop="48dp"
tools:layout_editor_absoluteY="90dp" /> app:constraint_referenced_ids="startServBtn,stopServBtn,takePhotoBtn,takePhotoBtn2,simchange,simchange2"
app:flow_horizontalGap="20dp"
app:flow_wrapMode="chain"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/port" />
<EditText <TextView
android:id="@+id/port"
android:id="@+id/sample_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:text="Hello World!"
android:ems="10" app:layout_constraintBottom_toBottomOf="parent"
android:inputType="" app:layout_constraintEnd_toEndOf="parent"
android:text="Name" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/server" app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="118dp" /> app:layout_constraintVertical_bias="0.929" />
<SurfaceView <SurfaceView
android:id="@+id/surfaceView" android:id="@+id/surfaceView"

@ -16,3 +16,4 @@ plugins {
} }

Loading…
Cancel
Save