如何在锁定屏幕上显示Activity或Dialog显示?
通过在Activity.onCreate()方法中设置各种窗口类型,我已经尝试在屏幕打开时显示我的锁定活动:
TYPE_PRIORITY_PHONE
TYPE_SYSTEM_ALERT
TYPE_KEYGUARD
和其他人一起SYSTEM_ALERT_WINDOW和INTERNAL_SYSTEM_WINDOW权限.
解锁设备后,我的活动可见.
更新:
我实际上已经设法显示我自己的Activity而不是默认锁定屏幕.除非您使用HOME按钮,否则它可以完美运行
android dialog lockscreen android-windowmanager android-activity
我有一个EditText和TabHost包含2个选项卡的布局.Android 1.6.
我在下面的例子中使用硬件键盘.重现步骤:
显示活动时,EditText将获得焦点.
只要按任意键,EditText就会失去焦点,第一个标签会获得它.
我再次点击EditText并开始输入.
除非我按下任何数字按钮,否则它有效.第一个标签再次获得焦点.
我用轨迹球滚动回EditText.我现在可以打字了.
在步骤2,3中在焦点EditText上左/右使用跟踪球也会使EditText失去焦点.
这很奇怪.怎么处理这个?
main.xml布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<EditText android:id="@+id/textfield" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:maxLines="1"
android:lines="1" android:hint="Search" />
<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout android:id="@+id/tab1"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
<LinearLayout android:id="@+id/tab2"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</FrameLayout>
<TabWidget android:id="@android:id/tabs"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="bottom" />
</LinearLayout>
</TabHost>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动类:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabs = (TabHost) this.findViewById(android.R.id.tabhost);
tabs.setup();
Button vBtn;
TabSpec …Run Code Online (Sandbox Code Playgroud) 我使用MediaPlayer从网络播放一首mp3歌曲.数据源是HTTP URL.
让我们假设我们有以下游戏状态.
歌曲持续时间:1:00
目前进展:0:10
当前缓冲进度0:30
让我们说我想跳过一首歌的某些部分并向前寻求.我使用MediaPlayer.seekTo()方法.如果我寻求缓冲位置(0:20),它会正确执行.但是如果我寻找一个尚未缓冲的位置(0:40),MediaPlayer表现得很奇怪.它立即表明它已正确搜索而无需等待缓冲区填充.事实上,它继续在寻找之前的同一位置上演奏.从现在开始,MediaPlayer.getCurrentPosition()方法返回错误的位置.当播放到达其结尾并且调用OnCompletionListener.onCompletion回调时,当前媒体播放器位置远高于整个歌曲持续时间.
解决这个问题的任何想法?
我有自己BroadcastReceiver的Intent.ACTION_HEADSET_PLUG行动实例.实际物理拔出耳机与我BroadcastReceiver收到通知的时刻之间有大约1-2秒的延迟.
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY - 1);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// my code here
}
}, filter);
Run Code Online (Sandbox Code Playgroud)
任何想法如何减少延迟?