6

SW、Googleなどで過去2日間探していました。以下の画面に示すように、ネイティブの Android ICS ロック画面に付属するアクティビティを実装する方法を探しています。これらの画面はPlayer Proからのものですが、他のプレーヤー (たとえば PlayerPro ) にもまったく同じように見える同じ機能があることに気付きました。そのため、それはネイティブなものであるか、少なくとも実装する一般的な方法があると思います。

これまでのところ、これらのフラグを使用してロック画面を置き換えるアクティビティのみを取得できました。

  • WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  • WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

これらのイベントで BroadCaseReciever を使用:

  • Intent.ACTION_SCREEN_ON
  • Intent.ACTION_SCREEN_OFF
  • Intent.ACTION_USER_PRESENT

私の問題は、自分のアクティビティをロック画面に置き換えずに表示したいということです。これを達成する方法を知っていますか?

これを行うためのネイティブ隠し API はありますか?

この特定の機能を実装するサンプルをリンクしてもらえますか?

前もって感謝します ;)

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

7

Android 4.0(APIレベル14)で追加されたAudio Controlsの「リモートビュー」(RemoteControlClient)APIをお探しかもしれません。私はAndroid開発者のドキュメントで次のようなAPIを見つけました:RemoteControlClient

メタデータ、アートワーク、およびメディアトランスポートコントロールボタンを表示できるリモートコントロールによって消費されることを意図した情報を公開できます。

このページからリンクされていました。)

注:私はこのAPIを自分で使用したことがないため、これが機能しない場合はお詫び申し上げます。

于 2012-06-08T18:03:28.803 に答える
1

あなたはほとんどそれを正しくやっています。BroadcastReceiver で行うことを続けます。それが行く方法です。ウィンドウの場合、使用する必要があるフラグは次のとおりです。

  • WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  • WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

FLAG_DISMISS_KEYGAURD を使用しないでください

これらのフラグの機能: SHOW_WHEN_LOCKED を使用すると、アクティビティをロック画面の上に表示できます。FLAG_NOT_TOUCH_MODAL は、アクティビティにないタッチ イベントを他のアクティビティに移動できるようにします。つまり、ユーザーが画面のロックを解除できるようにします。FLAG_DISMISS_KEYGUARD はロック画面を取り除くため、使用しません。

res/values/styles.xml ファイルでこのスタイルを定義します

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.FloatingTranslucent" parent="android:Theme.Translucent.NoTitleBar">
    <item name="android:windowIsFloating">true</item>
  </style>
</resources>

マニフェストで、アクティビティのスタイルを定義します

<activity android:name=".SampleActivity" android:theme="@style/Theme.FloatingTranslucent">
...
</activity>

これにより、アクティビティが完全に透けてコンテンツをラップできるようになります。

これで、アクティビティがロック画面の上に表示され、ロック画面とアプリへのタッチ入力が可能になり、アクティビティがフルサイズではなくなります。

乾杯。

于 2012-06-05T09:26:30.900 に答える