Android 1.5 SDK付属の「Spare Parts」アプリの「Battery information」を使用すると、以下のようなバッテリー情報を表示することできます。

BatteryInfo.png

※Android 1.1 SDK以前では、「Setting」アプリの「Abount Phone」>「Status」で、「Battery status」と「Battery level」しか表示できませんでした。

また、Android Marketにも、いくつかのバッテリー情報を取得するアプリが存在していたため、自分でも同情報を表示するアプリケーションを作成しようと試みたのですが、SDKのドキュメントを調べてみても、android.osパッケージのBatteryManagerクラスしか見つけられず。。。
(しかも、BatteryManagerは、ただの定数しか実装していないし。。。)

結局、androidのソースコードから検索して、Intent.ACTION_BATTERY_CHANGEDから取得できることがわかりました。
※ソースコード一式は、「バッテリーの情報(Battery information)を取得するには - 逆引きAndroid入門」に掲載しています

ところで、(受信した)Intent.ACTION_BATTERY_CHANGEDに対して、getIntExtra("status", )のようにキー名として、"status"を指定すると、ステータス情報を取得できるのですが、これらのキー名は、SDKのドキュメントに記載されていません。。。

今回は、ソースコードがあったのでキー名がわかったのですが、「インテントに格納されているキー名を列挙する」ということは可能でしょうか???どなたか ご存じであれば、教えてください。。。

Droid君、一目見た時から、「こいつはパスで描けそうだ!」と思っていたので実際に試してみました。。。

Path

ソースは、こちら(「パス(Path)を描画するには - 逆引きAndroid入門」)。
両目は、白の円で塗りつぶすのでなく、クリッピングしています。

ところで、頭から出でいる2本の線は、角?触覚?アンテナ???

[Android] AppWidget

| トラックバック(0) |

Androidの公式ブログ(Android Developers Blog)に、
Introducing home screen widgets and the AppWidget framework」という記事がありました。

内容は、Android 1.5 SDKで導入されたAppWidgetフレームワークにより、
開発者がホームスクリーン上でウィジットとして応答できるようになったということで、
具体的なサンプルソースコード(抜粋)と、その解説が掲載されています。
※サンプルソースコード(フル)の入手先(SVN  URL)については、「wiktionary-android - Google Code」に記載されています

また、AppWidgetについては、Android 1.5 SDK付属のApiDemosの下記ソースコードにもサンプルコードがあります。
%android-sdk-1.5_pre%\platforms\android-1.5\samples\ApiDemos\src\com\example\android\apis\appwidget\*.java

簡単に読んだ限りでは、以下の実装をすれば良さそうです。
※実際に試せてはないです...

1.AppWidgetProviderを継承したクラスを作成し、onUpdate()をオーバーライドして、フレームワークから呼び出されるウィジットの更新処理で、あなたのウィジットとして必要な処理を実装する。
このOnUpdate()では、時間のかかる処理をしてしまうと、Application Not Respoting(ANR)...応答なし、とみなされるので、そういう場合には、サービスで対応させる。

public class AppWidgetTest extends AppWidgetProvider {
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        Log.v("AppWidgetTest", "onUpdate");
    }
}

2.AppWidgetの最少幅、最小高さ、更新間隔などを記載したappwidget-providerをxmlに追加する。

<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="(セル(区画)の数*74)-2)dipを指定する"
    android:minHeight="(セル(区画)の数*74)-2)dipを指定する"
    android:updatePeriodMillis="更新間隔をミリ秒でいれる"
    />

3.アプリがAppWidgetとしてふるまうために、「android.appwidget.action.APPWIDGET_UPDATEに応答できるよ」ということを、AndroidManifest.xmlで宣言し、応答するAppWidgetProviderを継承したクラス(上記の1)、appwidget-providerのxml(上記の2)をメタデータとして関連づける。

<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".AppWidgetProviderを継承したクラス名" android:label="ウィジット名文字列">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
        android:resource="@xml/appwidget-providerを記載したxmlファイル名(.xml拡張子は除く)" />
</receiver>

Android SDKに付属のサンプルコードに含まれる「Snake」をビルドし、実行してみました。
※ソースコードは、%android-sdk%\samples\Snakeにあります

Snake.png

ゲームの内容としては、黄色い頭と赤い胴体の蛇(Snake)を上下左右カーソルキーで操作し、ランダムに出現する黄色いリンゴを食べ続けるというものです。リンゴを食べると、胴体が長くなり、だんだん移動速度も早くなります。自分の胴体や周囲の緑の壁に衝突するとゲームオーバーです。

ゲームの主要部分は、SnakeVIew.java(約560行)に書かれており、数少ないゲームのサンプルプログラムの一つです。このソースコードをベースに、音をつけたり、ネットワーク対戦型に拡張するなどすれば勉強になると思います。

※ちなみに、このSnakeゲームは、約25年前にPC-88でテープレコーダーから読み込んで遊んでいました(懐かしいです)

[Android] JetBoy

| トラックバック(0) |

Android 1.5 Early Look SDK付属のサンプルコードに含まれる「JetBoy」をビルドし、実行してみました。
※ソースコードは、%android-sdk-1.5_pre%\platforms\android-1.5\samples\JetBoyにあります

JetBoy

上図のとおり、横スクロール型シューティングゲームの見た目ですが、ゲームのサンプルコードだけでなく、Android 1.5で新規に追加されるandroid.mediaパッケージJetPlayerクラスのサンプルコードとなっています。

ゲームの内容としては、右から流れてくる隕石(Asteroid)に対して、タイミングよくボタンを押し、隕石を破壊するものですが、破壊できた隕石の数に応じて、BGMのビートが変更されるというものです。
※JetBoy(自機)の上下移動は自動的に行われます

このBGMのビートを変更しているソースコードは、JetBoyView.javaファイル、JetBoyViewクラスのprocessJetEvent()メソッド内のJetPlayerインスタンスへの呼び出しであり、JetPlayerクラスのためのサンプルコードとも言えそうです。
※背景の2重スクロールも同ファイルdoDrawRunning()メソッドで実現しています
※JetPlayerクラスのドキュメントは、%android-sdk-1.5_pre%/docs/reference/android/media/JetPlayer.htmlにあります

ちなみに、ゲーム終了時に50個以上破壊しているとクリアとなります。

<<前のページへ 6667686970717273747576

2012年6月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30