我正在构建一个应用程序,可以将手机从睡眠中唤醒然后开始投射。 我做的方法是制作一个启动类似活动的BroadcastReceiver
WakeLocker.acquire(context);
Intent intentAlarm = new Intent(context, AlarmRingingActivity.class);
intentAlarm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_NO_USER_ACTION |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
intentAlarm.setAction("ACTION_VIEW");
context.startActivity(intentAlarm);
然后在AlarmRingingActivity中使用此代码
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
mMediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button);
CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), mMediaRouteButton);
mCastContext = CastContext.getSharedInstance(this);
mSelector = new MediaRouteSelector.Builder()
// These are the framework-supported intents
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.build();
mMediaRouter = MediaRouter.getInstance(this);
for (MediaRouter.RouteInfo route : mMediaRouter.getRoutes()) {
if (route.getName().equals("Min Stue")) {
mMediaRouter.selectRoute(route);
Log.d("MyAlarm", "Size:" + mMediaRouter.getRoutes().size());
}
Log.d("MyAlarm", route + "");
}
如果我不锁定手机并开始投射,这一切都有效。但是,如果我锁定手机,它就不会开始投射。它显示了投射图标,我可以停止投射,但它实际上并没有投射到屏幕上。此外,如果手机睡眠时间过长,它会“忘记”媒体路线,唯一可用的媒体路线是手机本身。
所以我的问题是: