我正在尝试从服务中显示一个窗口但是没有得到它如何执行此操作
这是我的代码 -
在onStart
服务方法
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.main1, null);
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type = 2002;
params.format = 1;
params.flags = 40;
params.height = WindowManager.LayoutParams.FILL_PARENT;
params.width = WindowManager.LayoutParams.FILL_PARENT;
manager.addView(view, params);
/** just a timer *****/
textView = (TextView) view.findViewById(R.id.textView1);
final Timer t = new Timer("hello", true);
t.schedule(new TimerTask() {
@Override
public void run() {
textView.post(new Runnable() {
public void run() {
seconds++;
if (seconds == 60) {
seconds = 0;
minute++;
}
if (minute == 60) {
minute = 0;
hour++;
}
textView.setText(""
+ (hour > 9 ? hour : ("0" + hour)) + " : "
+ (minute > 9 ? minute : ("0" + minute))
+ " : "
+ (seconds > 9 ? seconds : "0" + seconds));
}
});
}
}, 1000, 1000);
view.findViewById(R.id.stop).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
t.cancel();
}
});
但没有出现。如何在服务窗口中显示我的观点?
答案 0 :(得分:6)
Wooohoooo得到它的工作诀窍就是使用系统窗口服务
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.FILL_PARENT, 150,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.CENTER;
添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
答案 1 :(得分:0)
钥匙处理也可以在服务中实施!! 通常,如果WindowManager用于显示服务中的视图,它在大多数情况下都不会执行任何关键事件!!
但你可以使用'dispatchKeyEvent'或任何其他键处理方法(onKeyUp,onKeyDown等)创建一个接口,并实现它们就是服务。
快乐的编码。