如何让用户访问解锁滑块上方的应用程序

时间:2011-08-29 14:41:36

标签: android

让我用一个例子来说明我正在寻找的东西。在我的手机上我有一个音乐播放器小部件,当活动并且手机超时时,播放器继续工作(iPod风格我得到了)。 但是当您重新打开手机时,播放器在解锁滑动条上方可见并处于活动状态。

在java中这很容易吗?允许用户访问解锁滑块上方的应用程序(密码前)。

现在我知道我们可以轻松地放置代码以避免睡眠模式。但是,我正在处理的应用程序只需要每10或20分钟查看/修改一次,并且保持手机打开是浪费电池。

2 个答案:

答案 0 :(得分:2)

这是一个有争议的问题:

  • 有些应用可以执行此操作。见How to customize Android's LockScreen?,例如WidgetLocker - 所以这并非完全不可能。

  • 但是,Google不建议使用Android锁定屏幕。谷歌已经删除了与其操作系统锁定屏幕交互的功能(特别是2.2)。关于here的更多信息。

但可以管理一些有用的效果。有涉及的技巧。

  • 一个技巧是用自定义锁定屏幕取代Android锁定屏幕 - 本质上是一个实现自己锁定的主屏幕应用程序。我认为这就是WidgetLocker的工作方式,但我不确定。 Android SDK附带了一个Home Screen演示应用程序。

  • 另一个技巧是在您的应用上使用ACTION_SCREEN_ONACTION_SCREEN_OFF意图操作以及WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED权限。您可以使用这些来更改显示BEHIND 而不是锁定屏幕的内容 - 这与问题要求非常接近(他们需要在锁定屏幕到位时查看某些信息)。 / p>

我有一个应用程序,使用上述技术在显示锁定屏幕时向用户显示信息。严格来说,它不是一个自定义的Android锁屏,但它会产生自定义手机锁定时显示的信息的效果。

它显示实际股票锁定屏幕后面的信息 。但您也可以更换手机锁定时通常显示的屏幕。


下面是一个(最小的)演示应用程序,它展示了在手机被锁定时如何显示信息。我忘记了我从大部分代码中获取的信息,但它有一些演示创意。我只是为了表明可以做些什么来呈现它 - 我绝不是说这就像“好”的生产代码。

当您运行应用程序并锁定手机时,应用程序会继续播放视频。此屏幕取代了锁定屏幕。

将此代码转换为生产代码需要一些工作,但它可能有助于读者。

YouTubeActivity.java:

最重要的部分是最后两行,可以在手机锁定时显示此活动。

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);
    }
}

main.xml中:

这里没什么特别的 - 只需在屏幕上放置一个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>

的AndroidManifest.xml:

绝对库存清单文件 - 这里没有什么有趣的。

<?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种方式来完成海报正在寻找的内容,或者可能对他有用的变通方法:

  • 做WidgetLocker的工作 - 我不知道究竟是怎么回事,开发人员也不知道。
  • 更改股票锁定屏幕后面的背景。
  • 覆盖活动而不是股票锁定屏幕(提供演示代码)。

答案 1 :(得分:-1)

no API for drawing on lock screenreplace lock screen也不能使用自定义的{{3}}。所以你不能为这样做的股票Android手机编写一个应用程序。

为此,您需要在root手机中创建自定义固件或使用非标准功能。