我是Android开发的新手,但是我有使用Java的经验。
我的目标是创建一个应用程序,该应用程序将在设备解锁时尝试连接以打开Wifi AP(在打开屏幕并正确输入了密码之后)。
这将确保仅在用户要使用电话之前运行应用程序,以节省不使用时的电量。还有其他方法可以检测我的应用程序未在前台运行时何时激活电话。
我的应用程序是相对线性的: 1.检测设备是否处于解锁状态(用户正在使用电话)或其他类型的触发器。 2.如果wifi开启并且设备尚未连接到任何AP,请扫描wifi。 3.如果开放式AP在范围内,请选择信号最强的一个并尝试连接。
现在,我正在研究如何检测设备解锁状态的选项,但是不同的API级别限制使它变得混乱。我不打算将该应用程序发布到Play商店,因此Google Play的目标API级别要求不会打扰我。我希望我的应用程序可以在android 4.3及更高版本或android 5及更高版本(如果无法运行4.3)上运行。>
这些是我现在遇到的选项。 1.广播接收器-> ACTION_USER_PRESENT 2. Job Scheduler仅适用于android 5及更高版本(我也可以)。 3.后台服务。较新的android版本将限制这些。
我愿意接受任何建议和信息,包括其他步骤可能出现的问题。 谢谢。
答案 0 :(得分:0)
对不起! 我已经创建了项目,并且正在AVD上测试多个代码段,但是似乎没有任何效果。然后,我尝试在手机上运行应用程序,结果一切正常。
将处理广播的类。
public class ConBroRec extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) {
//when device is unlocked
}
}
}
清单
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
...
<application ...>
...
<receiver android:name=".ConBroRec"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
...
</application>
...
</manifest>
targetSdkVersion <= 25