我试图从服务中显示一个窗口,但没有得到它如何做到这一点
这是我的代码 -
在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) { …Run Code Online (Sandbox Code Playgroud) 我有一个BroadcastReceiver开始Activity.如果在Activity屏幕打开时启动,则显示并且一切正常.但是,在ICS和JB设备上(我没有测试GB或HC,但Froyo不存在问题)如果Activity在屏幕关闭时启动,则锁定屏幕不会被禁用,并且当活动未显示时手机解锁(通过手动解锁或使用我为后Froyo设备输入的代码).
为什么,至少在ICS和JB设备上,如果没有下面提到的代码,锁屏就不会被禁用,为什么活动显示屏幕Activity在启动时屏幕是否关闭?
这是代码:
在BroadcastReceiver:
Intent alarmAlert = new Intent(context, AlarmGoneOffActivity.class);
alarmAlert.putExtra(MyAlarmManager.ALARM_NUM_ID, alarm.ID);
alarmAlert.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alarmAlert);
Run Code Online (Sandbox Code Playgroud)
在AlarmGoneOffActivity.onCreate():
setContentView(R.layout.alarm_gone_off);
final Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
//so far all of my post froyo devices (ICS and JB no more GB)
// don't bypass the lockscreen unless we use this
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
KeyguardManager …Run Code Online (Sandbox Code Playgroud) android android-screen android-windowmanager android-activity
我想构建一个在锁屏上可见的对话框,可以接收触摸事件.我构建了一个窗口,WindowManager但只有TYPE_SYSTEM_OVERLAY标志显示在GB(Android 2.3.7)的锁屏上.
有没有办法创建一个在锁屏上可见的系统覆盖,并可以在Android 2.3.7中接收触摸事件?
有一个错误,FLAG_WATCH_OUTSIDE_TOUCH但我不确定这对我有什么影响.有任何想法吗?
我正在使用以下标志onAttachedToWindow()来显示我Activity的键盘上方:
FLAG_DISMISS_KEYGUARD | FLAG_SHOW_WHEN_LOCKED | FLAG_TURN_SCREEN_ON
这很好,但是,当屏幕关闭时从后台服务启动我的活动时,键控器有时会在我的应用程序显示之前显示1-2秒.这种情况尤其发生在较慢的手机上(或在低内存情况下).我发现这很奇怪,因为我的理解是在/之后onAttachedToWindow()调用的,所以当上面提到的标志被设置时,所有"繁重的工作"应该已经完成了吗?有没有办法只显示我的一次完全设置? onCreate()onResume()Activity
我正在尝试创建类似于Paranoid Android上的Halo Notification的应用程序.到现在为止还挺好.
但是,当我的"光环"出现在屏幕上时,我可以将它移动得很好,大多数触摸事件都能正常工作.但是,当我尝试通过点击EditText弹出键盘时,没有任何反应.窗口似乎消耗了焦点.后退按钮也不起作用,但主页和最近的应用程序按钮工作.
我正在运行PA的AOSP 4.4的根管理Nexus 4上测试应用程序
我用来创建光环窗口的代码(布局参数)是:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
Run Code Online (Sandbox Code Playgroud)
有什么想法导致这种选择性的触摸事件消耗?
正如标题所说,我想在Android工作室内有两个窗口来查看同时运行的2个设备的日志,如何实现这一目标?目前我必须一直切换设备,但是当你必须比较不同的值时它不是很方便.
我找到了这个帖子,但它在AS中不起作用:
我有一个带有标志 FLAG_SECURE 的浮动窗口。它已成功隐藏在我设置的屏幕截图和 MediaProjection 中。当我通过 MediaProjection 录制时,它显示为黑色矩形对象。我的浮动窗口中的所有内容都被涂黑了。
WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_PHONE;
params.format = PixelFormat.TRANSPARENT;
params.flags = WindowManager.LayoutParams.FLAG_SECURE;
windowManager.addView(floatingView, params);
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以隐藏这个浮动窗口?我的意思是不将其显示为黑色对象,而是在浮动窗口下捕获内容,以便它完全隐藏在 MediaProjection 之外?
我想videoView.isAttachedToWindow()在我的片段中使用调用来验证videoview是否已初始化正常并且可以调用.
但是这个调用需要api级别19(当前min是14).videoView.isAttachedToWindow()API级别14及以上的最佳替代方案是什么?
编辑:我的视频视频播放通过Android盒子的HDMI输入流式传输的视频.在某些具有OS 4.0.4的硬件中,视频有时会出现抖动.
java android android-layout android-view android-windowmanager
尝试向WindowManager添加内容时遇到了问题.什么是最有趣的,如果你通过另一个编译器(AIDE)编译,那么一切正常.我现在正在使用Android工作室.以下是代码:
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP|Gravity.LEFT;
params.x = 0;
params.y = y - barHeight;
windowManager.addView(nb, params); // error there
Run Code Online (Sandbox Code Playgroud)
AndroidManifest:
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
错误信息:
java.lang.RuntimeException: Unable to create service priv.congard.ozonehd4k.controlpanel.NavigationBarService: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a8744a7 -- permission denied for window type 2003
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3226)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1586)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: android.view.WindowManager$BadTokenException: …Run Code Online (Sandbox Code Playgroud) 我正在 Android 上开发浮动窗口,但遇到了问题。因此,我的活动调用我的浮动类,该类创建视图并将其添加到窗口管理器,并带有显示并倒计时的计时器。在正常活动中尝试相同的代码时,它可以找到:S?
这是我的视图模型,其中包含 mutableStateOf 值
class WicViewModel : ViewModel() {
private val TAG = "WicViewModel"
private val a = 10000L
private val b = 1000L
private var _input: Long by mutableStateOf(a)
var input: Long
get() = _input
set(value) {
if (value == _input) return
_input = value
}
fun start() {
val timer = object : CountDownTimer(a, b) {
override fun onTick(millisUntilFinished: Long) {
Log.d("MYLOG", "text updated programmatically")
input = millisUntilFinished
}
override fun onFinish() {
input = 0 …Run Code Online (Sandbox Code Playgroud) user-interface android android-windowmanager kotlin android-jetpack-compose