Sol*_*kin 21 android screen android-sensors sensormanager
我的应用程序是拨号器,当用户将手机靠近他的头时,我需要关闭屏幕并防止点击控件 - 就像本机Android拨号器行为一样.我需要什么API级别以及如何以正确的方式执行此操作?
Sol*_*kin 43
我通过拆卸一个非常着名的VoIP应用程序找到了解决方案.按下button1后此活动将在关闭传感器时禁用屏幕和硬件键.按下按钮2后,此功能将关闭.
此外,此功能需要权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
活动.试试吧.
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();
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20585 次 |
| 最近记录: |