我的应用程序是一个拨号器,当用户将手机靠近头部时,我需要关闭屏幕并防止单击控件 - 就像本机 Android 拨号器行为一样。我需要什么 API 级别以及如何以正确的方式做到这一点?
我通过反汇编一个非常著名的 VoIP 应用程序找到了解决方案。当您关闭传感器时,按下按钮 1 后的此活动将禁用屏幕和硬件按键。按下按钮 2 后,该功能将关闭。
此外,此功能需要许可:
<uses-permission android:name="android.permission.WAKE_LOCK" />
活动。尝试一下。
public class MainActivity extends Activity {
private Button button1;
private Button button2;
private PowerManager powerManager;
private PowerManager.WakeLock wakeLock;
private int field = 0x00000020;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
// Yeah, this is hidden field.
field = PowerManager.class.getClass().getField("PROXIMITY_SCREEN_OFF_WAKE_LOCK").getInt(null);
} catch (Throwable ignored) {
}
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(field, getLocalClassName());
setContentView(R.layout.main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(!wakeLock.isHeld()) {
wakeLock.acquire();
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(wakeLock.isHeld()) {
wakeLock.release();
}
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)