相关疑难解决方法(0)

ADB Shell输入事件

adb shell input keyevent和之间的基本区别是adb shell sendevent什么?我应该用哪一个来输入一个角色?我们传递给这两个命令的密钥代码是否相同?

android adb

207
推荐指数
7
解决办法
42万
查看次数

如何以编程方式锁定/解锁屏幕?

我正在做一个锁定屏幕的应用程序.现在它是锁定的,如果屏幕没有进入必须打开屏幕的服务,它就从那里进入广播接收器.

以下是广播接收器:

  public class ScreenReceiver extends BroadcastReceiver {   
    public static boolean wasScreenOn = true;
    @Override
    public void onReceive(Context context, Intent intent) {

        System.out.println("Entered Broadcaste Reciever");

        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // DO WHATEVER YOU NEED TO DO HERE
             System.out.println("SCREEN_OFF"+wasScreenOn);
            wasScreenOn = false;

            Intent i = new Intent(context, UpdateService.class);
            i.putExtra("screen_state", wasScreenOn);
            context.startService(i);

            System.out.println("jrkejhr keh");
        }
        else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // AND DO WHATEVER YOU NEED TO DO HERE
            wasScreenOn = true;
            System.out.println("SCREEN_ON"+wasScreenOn);
        }
    }
Run Code Online (Sandbox Code Playgroud)

它进入我写过回家的意图行动的服务是......

  ShakeListener mShaker;
    int amountOfTime = 0;
    Context context1; …
Run Code Online (Sandbox Code Playgroud)

android

34
推荐指数
3
解决办法
9万
查看次数

从接收器/服务打开屏幕

我希望我的应用能够打开屏幕并显示我的应用程序.假设我正在设置闹钟,每小时我都希望我的应用在设备自然睡眠前显示2分钟.

我看到不推荐使用WakeLock(FULL_LOCK)和KeyguardManager.

我创建了一个WakefulBroadcastReceiver和服务,这些都在工作.

@Override
protected void onHandleIntent(Intent intent) {
    // I need to show the screen here!

    for (int i=0; i<5; i++) {
        Log.i("SimpleWakefulReceiver", "Running service " + (i + 1)
                + "/5 @ " + SystemClock.elapsedRealtime());
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
    }
    Log.i("SimpleWakefulReceiver", "Completed service @ " + 
          SystemClock.elapsedRealtime());
    SimpleWakefulReceiver.completeWakefulIntent(intent);
}
Run Code Online (Sandbox Code Playgroud)

如何以编程方式打开屏幕,过去锁定并从IntentService显示我的活动?

谢谢

service android android-wake-lock

20
推荐指数
1
解决办法
1万
查看次数

Android O - FLAG_SHOW_WHEN_LOCKED已弃用

我正在将我的应用程序定位到Android O.在我的应用程序中,我有一个作业服务,显示所有其他应用程序的窗口,因此当它触发时,即使屏幕关闭和解锁并打开它,也需要显示此窗口.我已经在preior Android版本中实现了这种行为,但是在Android O中它没有像我预期的那样工作.

我已经读过我需要使用该标志TYPE_APPLICATION_OVERLAY<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>在清单文件中添加了权限.

所以它在屏幕打开时工作正常,但是当屏幕关闭时我注意到它没有打开屏幕,当我转动屏幕时,我看到窗口是在其他应用程序之上创建的.

所以我的问题是因为旗帜FLAG_TURN_SCREEN_ON并且FLAG_SHOW_WHEN_LOCKED在Android API 27中被弃用了,有什么替代方法呢?

这是我目前的代码:

private void showView()
{
    if (!wakeLockAcquired)
    {
        wakeLock.acquire();
        wakeLockAquired = true;
    }

    windowManager = (WindowManager)context.getSystemService(WINDOW_SERVICE);

    final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
            ,
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ,
            PixelFormat.RGBA_8888);

    RelativeLayout layout = buildView();
    windowManager.addView(layout, layoutParams);
    windowManager.updateViewLayout(layout, layoutParams);
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • buildView是一个返回relativeLayout的函数,在这个函数中我是动态添加内容的(TextView,ImageView等).
  • wakeLockAcquired是一个布尔成员,在视图被销毁时设置为false.

android android-windowmanager android-8.0-oreo

15
推荐指数
3
解决办法
1万
查看次数