关闭屏幕编程时,面对的是关闭屏幕在Android [英] Turn off screen programmatically when face is close the screen on Android

查看:218
本文介绍了关闭屏幕编程时,面对的是关闭屏幕在Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序是一个拨号器,当用户拿着手机靠近他的头,我需要把屏幕关闭,prevent点击上的控制 - 就像原生的Andr​​oid拨号器的行为。我需要什么API级别,我怎么能做到这一点在正确的方式?

My app is a dialer and when user holding the phone near his head I need to turn screen off and prevent clicking on the controls - like native Android dialer behavior. What API level I need and how can I do this in right way?

推荐答案

我找到的解决方案通过拆开一个非常著名的VoIP应用。 pressing按钮1之后,此活动将禁用屏幕和硬件按键,当你接近传感器。经过pressing按钮2,此功能将关闭。

I found solution by disassembling one very famous VoIP application. This activity after pressing button1 will disable screen and hardware keys when you close sensors. After pressing button2 this function will be switched off.

此外,不需要该功能的权限:

Also, this function required permission:

<uses-permission android:name="android.permission.WAKE_LOCK" />

活动。试试吧。

Activity. Try it.

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();
                }
            }
        });
    }
}

这篇关于关闭屏幕编程时,面对的是关闭屏幕在Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆