让我用一个例子来说明我正在寻找的东西。在我的手机上我有一个音乐播放器小部件,当活动并且手机超时时,播放器继续工作(iPod风格我得到了)。 但是当您重新打开手机时,播放器在解锁滑动条上方可见并处于活动状态。
在java中这很容易吗?允许用户访问解锁滑块上方的应用程序(密码前)。
现在我知道我们可以轻松地放置代码以避免睡眠模式。但是,我正在处理的应用程序只需要每10或20分钟查看/修改一次,并且保持手机打开是浪费电池。
答案 0 :(得分:2)
这是一个有争议的问题:
有些应用可以执行此操作。见How to customize Android's LockScreen?,例如WidgetLocker - 所以这并非完全不可能。
但是,Google不建议使用Android锁定屏幕。谷歌已经删除了与其操作系统锁定屏幕交互的功能(特别是2.2)。关于here的更多信息。
但可以管理一些有用的效果。有涉及的技巧。
一个技巧是用自定义锁定屏幕取代Android锁定屏幕 - 本质上是一个实现自己锁定的主屏幕应用程序。我认为这就是WidgetLocker的工作方式,但我不确定。 Android SDK附带了一个Home Screen演示应用程序。
另一个技巧是在您的应用上使用ACTION_SCREEN_ON
和ACTION_SCREEN_OFF
意图操作以及WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
权限。您可以使用这些来更改显示BEHIND 或而不是锁定屏幕的内容 - 这与问题要求非常接近(他们需要在锁定屏幕到位时查看某些信息)。 / p>
我有一个应用程序,使用上述技术在显示锁定屏幕时向用户显示信息。严格来说,它不是一个自定义的Android锁屏,但它会产生自定义手机锁定时显示的信息的效果。
它显示实际股票锁定屏幕后面的信息 。但您也可以更换手机锁定时通常显示的屏幕。
下面是一个(最小的)演示应用程序,它展示了在手机被锁定时如何显示信息。我忘记了我从大部分代码中获取的信息,但它有一些演示创意。我只是为了表明可以做些什么来呈现它 - 我绝不是说这就像“好”的生产代码。
当您运行应用程序并锁定手机时,应用程序会继续播放视频。此屏幕取代了锁定屏幕。
将此代码转换为生产代码需要一些工作,但它可能有助于读者。
最重要的部分是最后两行,可以在手机锁定时显示此活动。
package com.youtube.demo;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.VideoView;
public class YouTubeActivity extends Activity
{
String SrcPath = "rtsp://v5.cache1.c.youtube.com/CjYLENy73wIaLQnhycnrJQ8qmRMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYPj_hYjnq6uUTQw=/0/0/0/video.3gp";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
VideoView myVideoView = (VideoView) findViewById(R.id.myvideoview);
myVideoView.setVideoURI(Uri.parse(SrcPath));
myVideoView.requestFocus();
myVideoView.start();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
}
这里没什么特别的 - 只需在屏幕上放置一个VideoView
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView android:id="@+id/myvideoview"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</LinearLayout>
绝对库存清单文件 - 这里没有什么有趣的。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.youtube.demo" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".YouTubeActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
所以我可以想到 3种方式来完成海报正在寻找的内容,或者可能对他有用的变通方法:
答案 1 :(得分:-1)
no API for drawing on lock screen,replace lock screen也不能使用自定义的{{3}}。所以你不能为这样做的股票Android手机编写一个应用程序。
为此,您需要在root手机中创建自定义固件或使用非标准功能。