2011-02-03 7 views
4

私は現在、バッテリーの状態を表示するためにアプリを開発中です。自分のイメージではなく、Androidドロワーブルを使ってアプリのサイズを縮小したいと思います。Android:アクセス "システム" - ドローイング

Iました見つかった各SDKのバージョンのために利用可能な画像と可用性を示しています。このページ:
http://www.fixedd.com/projects/android_drawables_display

私の質問:どのように私は、「システム」-drawablesがアクセスすることができますか?リンクをクリックして "ステータス"タブを選択すると、 "stat_sys_battery_0"のようなバッテリーのドロワブルがありますが、私はそれにアクセスできない、Eclipseはインテリセンスを提供していないし、それらのドロアブルの1つを使用してください。

これらのドロアブルはすべてのSDKバージョンに含まれているので、私はそれらを使うことができるはずだと思っています。あるいは、特別なドロアブルがシステム機能によってのみ使用できるように保護されています。アプリではない)?

ご了承ください。

Select0r

答えて

1

があり、実際にシステムアイコンにアクセスする方法のようですが、それは本当にドキュメントに記載されているように働いていないが、ケースの誰かが興味を持っている中で、私はそれを追加します:

intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, -1)


http://developer.android.com/reference/android/os/BatteryManager.html#EXTRA_ICON_SMALL

エクストラACTION_BATTERY_CHANGED用:

はあなたの現在のバッテリーの状態と一致するアイコンのリソースIDを取得しますをリソースIDが の整数。 現在のバッテリ状態を示す小さなステータスバーアイコン。

ただし、実際のバッテリー残量に関係なく、常に同じアイコンが返されます。乱数を試してみるとアイコンが見つかるかもしれませんが、IDがSKDレベルや異なるマシンで一貫しているかどうかは分かりません。これは、あなたが探していたものです

2

私はすべてではないドローアブルが公開されているという情報を持つ別のリンクを見つけました。それはなぜいくつかのdrawablesがプライベートになるとは言わないが、私は事実に住んで、私のアプリに必要な画像をコピーする必要がありますね。
http://androiddrawableexplorer.appspot.com/

注:Androidのjarファイル内の画像の一部は、公開されないため、直接あなたがあなた自身のアプリケーションにコピーすることができます(使用することはできませんが、「アンドロイド」パッケージの名前空間を経由して、それらを参照することはできません)。

+0

+1嬉しいです。私は前にこの問題に遭遇し、私は1.6互換のビルド環境を維持していたという事実にそれを置いた。 –

3

希望:あなたはこの答えを見つけた

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context arg0, Intent intent) { 

     int level = intent.getIntExtra("level", 0); 

     int batteryIconId = intent.getIntExtra("icon-small", 0); 
     Button toolBarBattery = (Button) findViewById(R.id.toolBarButton); 

     LevelListDrawable batteryLevel = (LevelListDrawable) getResources().getDrawable(batteryIconId); 
     batteryLevel.setLevel(level); 

     toolBarBattery.setBackgroundDrawable(batteryLevel); 

    } 
}; 
+0

これは2週間前の私の(受け入れられた)ソリューションと実際はほぼ同じです。唯一の違いは、あなたが「icon-small」を使用していて、私が 'BatteryManager.EXTRA_ICON_SMALL'を使っていることです。 – Select0r

+0

"ただし、実際のバッテリーレベルが何であっても、常に同じアイコンが返されます..." LevelListDrawableオブジェクトを使用すると、その問題は解決します。 – rttn

関連する問題