電源オフ時の充電中(charger mode)画像を差し替えてみました。
充電完了(100%)時、幸せになれます。

差し替えたファイル
- android-4.0.3_r1\system\core\charger\images\battery_*.png

※上記キャプチャの一番上の段がAOSPオリジナル画像、二番目の段が差し替えた画像
あわせて読みたい
- sola : Ice Cream Sandwich で追加された charger mode
電源オフ時の充電中(charger mode)画像を差し替えてみました。
充電完了(100%)時、幸せになれます。

差し替えたファイル

※上記キャプチャの一番上の段がAOSPオリジナル画像、二番目の段が差し替えた画像
あわせて読みたい
これまで、Android のセキュリティーについて、まとまった書籍がなかったのですが、
それも昨日までのこと。。。
まるごと一冊 Android のセキュリティーに特化した
「Android Security 安全なアプリケーションを作成するために」
という書籍が、本日(2011年12月29日)発売されます(祝)!

書籍の内容としては、Android のセキュリティーアーキテクチャから始まり、
Android を理解する上で重要である File System、Permission、Intent、Service、ContentProvider、Broadcast、
ProGuard、LVL、暗号化、Device Administration、Account Manager などなど、
本家公式サイトでも書かれていない情報が、丁寧に解説されています。
書籍の冒頭でも紹介されているとおり、、、
開発したアプリに脆弱性があった場合、扱っている情報の漏洩だけにとどまらず、
場合によっては、他の悪意のあるアプリから踏み台にされるなど、
開発者の信用問題にもかかわってきます。
orz オワタ。。。
とならないよう、
個人、企業問わず、Android 開発者であれば、読んでおきたい一冊です。
以下、書籍の情報です。
章ごとのページ数も書いておきましたので、興味ある章のボリュームを確認できると思います。
Android Security 安全なアプリケーションを作成するために
第1章 ケーススタディ ・・・(9ページ)
- 1.1 Skypeアプリの脆弱性
- 1.2 コンテントプロバイダ使用時の典型的な脆弱性
- 1.3 まとめ
第2章 セキュリティ要件 ・・・(10ページ)
- 2.1 セキュリティ要件とは
- 2.2 保護すべき項目の範囲
- 2.3 プライバシー保護
- 2.4 著作権保護
- 2.5 アプリケーションの悪用抑止
- 2.6 アプリケーションの不正利用抑止
- 2.7 まとめ
第3章 アンドロイドのセキュリティ ・・・(18ページ)
- 3.1 セキュリティアーキテクチャ
- 3.2 証明書とアプリケーションの署名
- 3.3 ユーザIDとファイルアクセス
- 3.4 パーミッション
- 3.5 固有識別子
- 3.6 まとめ
第4章 アプリケーションファイル(APKファイル) ・・・(27ページ)
- 4.1 アンドロイドプロジェクト
- 4.2 インストール
- 4.3 APKファイルの取得
- 4.4 他のアプリケーションからのリソースの取得
- 4.5 まとめ
第5章 ファイルのアクセス許可 ・・・(32ページ)
- 5.1 ファイルシステムの基本
- 5.2 ユーザIDとファイルアクセス
- 5.3 アプリケーションデータディレクトリ
- 5.4 外部記憶装置
- 5.5 プリファレンス
- 5.6 データベース
- 5.7 まとめ
第6章 パーミッション ・・・(26ページ)
- 6.1 パーミッションの使用
- 6.2 パーミッションによるアクセス制限
- 6.3 パーミッションの作成
- 6.4 アンドロイドの定義済みパーミッション
- 6.5 疑われやすいパーミッションの組み合わせ
- 6.6 まとめ
第7章 コンテントプロバイダ ・・・(21ページ)
- 7.1 コンテントプロバイダとは
- 7.2 コンテントプロバイダのセキュリティ
- 7.3 コンテントプロバイダの宣言
- 7.4 パーミッション
- 7.5 URIパーミッション
- 7.6 コンテントプロバイダのパーミッション設定事例
- 7.7 コンテントプロバイダの注意点
- 7.8 まとめ
第8章 インテント ・・・(42ページ)
- 8.1 インテントの構成要素
- 8.2 インテントを使用するときの注意点
- 8.3 アクティビティのセキュリティ
- 8.4 ブロードキャストのセキュリティ
- 8.5 サービスのセキュリティ
- 8.6 まとめ
第9章 アプリケーションの保護 ・・・(41ページ)
- 9.1 ソースコードの解析
- 9.2 ProGuard
- 9.3 Android Market Licensing Service
- 9.4 まとめ
第10章 暗号化手法 ・・・(17ページ)
- 10.1 Javaの暗号化アーキテクチャ
- 10.2 よく使用される暗号方式
- 10.3 アンドロイドで使用できる暗号方式
- 10.4 AES暗号方式の使用例
- 10.5 セキュリティサービス
- 10.6 まとめ
第11章 セキュリティに関連する機能 ・・・(42ページ)
- 11.1 Device Administration
- 11.2 アカウントマネージャ
- 11.3 まとめ
付録A セキュリティ対策チェックリスト ・・・お勧め!
付録B 用語集
最後になりましたが、タオソフトウェア株式会社の谷口様、インプレスジャパンの鈴木様、 献本ありがとうございましたm_ _m
あわせて読みたい
Android Market 100 億ダウンロード記念として 2011 年 12 月 6 日(米国時間)から 10 日間にわたって販売された有料アプリをまとめました。
国内で購入可能だったアプリは 85本、くわえて海外では +7 本購入可能であり、計 92 アプリが販売されました。
カテゴリ毎に分類してみると、改めてゲーム多すぎ・・・という感じで、ゲームをしない人には、ちょっと残念な感じだったかもしれません^^;
| カテゴリ | No. | アイコン | アプリ名 / 作者 | 評価 | DL数 | 価格 | セール | レビューサイト |
|---|---|---|---|---|---|---|---|---|
| アーケード & アクション |
1 | Great Little War Game Rubicon Development |
![]() 4.6 |
10万DL~ | 233円 | 1日目 6日目 |
andronavi | |
| 2 | Puffle Launch Disney |
![]() 4.6 |
10万DL~ | 77円 | 10日目 | |||
| 3 | Space Physics Camel Games |
![]() 4.5 |
10万DL~ | 157円 | 3日目 | octoba | ||
| 4 | Spirit HD Jakyl |
![]() 4.5 |
10万DL~ | 99円 | 4日目 | andronavi | ||
| 5 | Guns'n'Glory HandyGames |
![]() 4.5 |
10万DL~ | 100円 | 9日目 | |||
| 6 | ZENONIA GAMEVIL Inc. |
![]() 4.5 |
10万DL~ | 99円 | 9日目 | |||
| 7 | Hyper Jump Camel Games |
![]() 4.5 |
10万DL~ | 157円 | 10日目 | octoba | ||
| 8 | Fruit Ninja Halfbrick Studios |
![]() 4.4 |
50万DL~ | 102円 | 2日目 | octoba | ||
| 9 | Homerun Battle 3D Com2uS |
![]() 4.4 |
10万DL~ | 390円 | 3日目 | octoba | ||
| 10 | Jelly Defense Infinite Dreams |
![]() 4.4 |
10万DL~ | 229円 | 4日目 | andronavi | ||
| 11 | Farm Frenzy HeroCraft Ltd |
![]() 4.4 |
10万DL~ | 157円 | 4日目 | octoba | ||
| 12 | Doodle Jump GameHouse |
![]() 4.4 |
50万DL~ | 99円 | 7日目 | |||
| 13 | Blow Up Camel Games |
![]() 4.4 |
10万DL~ | 155円 | 7日目 | |||
| 14 | Sleepy Jack SilverTree Media |
![]() 4.4 |
5万DL~ | 199円 | 9日目 | andronavi | ||
| 15 | Majesty: Fantasy Kingdom Sim HeroCraft Ltd |
![]() 4.4 |
10万DL~ | 99円 | 10日目 | |||
| 16 | Minecraft - Pocket Edition Mojang |
![]() 4.3 |
10万DL~ | 540円 | 1日目 | octoba | ||
| 17 | Age of Zombies Halfbrick Studios |
![]() 4.3 |
10万DL~ | 77円 | 5日目 | |||
| 18 | Tank Riders polarbit |
![]() 4.2 |
10万DL~ | 155円 | 9日目 | |||
| 19 | BackStab HD Gameloft |
![]() 3.8 |
10万DL~ | 600円 | 6日目 | famitsu | ||
| 20 | Backbreaker Football NaturalMotionGames Ltd |
![]() 3.8 |
10万DL~ | 239円 | 6日目 | |||
| 21 | HEAVY GUNNER 3D Com2uS |
![]() 3.7 |
10万DL~ | 388円 | 10日目 | |||
| 22 | キャプテン・アメリカ Marvel Games |
![]() 3.3 |
10万DL~ | 233円 | 6日目 | famitsu | ||
| エンター テイメント |
23 | おしゃべり猫のトム 2 Outfit7 |
![]() 4.4 |
10万DL~ | 99円 | 3日目 | ||
| 24 | トーキングベン・ザ・ドッグ Outfit7 |
![]() 4.2 |
10万DL~ | 99円 | 10日目 | |||
| カジュアル | 25 | Game Dev Story Kairosoft Co.,Ltd |
![]() 4.7 |
10万DL~ | 230円 | 4日目 | ||
| 26 | Kids Connect the Dots intellijoy |
![]() 4.6 |
5万DL~ | 230円 | 5日目 | |||
| 27 | ゲーム発展国++ Kairosoft Co.,Ltd |
![]() 4.5 |
1万DL~ | 230円 | 4日目 | octoba | ||
| 28 | Fieldrunners HD Subatomic Studios, LLC |
![]() 4.4 |
10万DL~ | 232円 | 1日目 | androider | ||
| 29 | Can Knockdown 2 Infinite Dreams |
![]() 4.3 |
10万DL~ | 99円 | 3日目 | octoba | ||
| 30 | ハマる★ブロック崩し Unlimited HD Gameloft |
![]() 4.2 |
10万DL~ | 99円 | 7日目 | |||
| 31 | Flight Control Namco Networks |
![]() 3.9 |
10万DL~ | 244円 | 7日目 | octoba | ||
| 32 | Sentinel 3: Homeworld Origin8 Technologies Ltd. |
![]() 3.7 |
10万DL~ | 230円 | 4日目 10日目 |
|||
| 33 | The Sims 3 Electronic Arts Inc. |
![]() 3.5 |
10万DL~ | 600円 | 5日目 | octoba | ||
| 34 | SimCity Deluxe Electronic Arts Inc. |
![]() 3.1 |
10万DL~ | 500円 | 6日目 | octoba | ||
| カスタマイズ | 35 | Christmas HD DualBoot Games |
![]() 4.8 |
10万DL~ | 199円 | 2日目 8日目 |
androider | |
| 36 | My Beach HD DualBoot Games |
![]() 4.6 |
10万DL~ | 99円 | 4日目 | andronavi | ||
| 37 | Season Zen HD DualBoot Games |
![]() 4.6 |
10万DL~ | 149円 | 5日目 | |||
| 38 | Snowfall Live Wallpaper Kittehface Software |
![]() 4.6 |
10万DL~ | 99円 | 5日目 | octoba | ||
| 39 | Beautiful Widgets LevelUp Studio |
![]() 4.5 |
100万DL~ | 229円 | 2日目 7日目 |
octoba | ||
| 40 | Blue Skies Live Wallpaper Kittehface Software |
![]() 4.5 |
10万DL~ | 99円 | 3日目 | |||
| 41 | ADWLauncher EX AnderWeb |
![]() 4.4 |
10万DL~ | 255円 | 3日目 | octoba | ||
| 42 | NFL 3D Live Wallpaper Unlocked Airborne Studios LLC |
![]() 4.3 |
1万DL~ | 388円 | 6日目 | |||
| 43 | HDウィジェットは cloud.tv |
![]() 4.0 |
10万DL~ | 99円 | 8日目 | octoba | ||
| スポーツ | 44 | Flick Golf! Full Fat Productions Ltd |
![]() 4.2 |
10万DL~ | 99円 | 2日目 8日目 |
octoba | |
| 45 | Baseball Superstars 2011 GAMEVIL Inc. |
![]() 4.2 |
5万DL~ | 99円 | 4日目 | |||
| 46 | SUPER KO BOXING! 2 Glu Mobile |
![]() 4.0 |
5万DL~ | 250円 | 7日目 | |||
| 47 | Flick Soccer! Full Fat Productions Ltd |
![]() 3.7 |
10万DL~ | 99円 | 7日目 | octoba | ||
| 48 | DEER HUNTER 3D Glu Mobile |
![]() 3.6 |
10万DL~ | 450円 | 9日目 | famitsu | ||
| 49 | NFL Rivals NaturalMotionGames Ltd |
![]() 2.7 |
1万DL~ | 232円 | 2日目 | |||
| 50 | Icebreaker Hockey NaturalMotionGames Ltd |
![]() 2.2 |
1万DL~ | 236円 | 9日目 | |||
| ツール | 51 | SlideIT キーボード Dasur Ltd. |
![]() 4.4 |
10万DL~ | 499円 | 5日目 8日目 |
octoba | |
| ニュース & 雑誌 |
52 | Read It Later Pro Read It Later |
![]() 4.7 |
10万DL~ | 242円 | 2日目 | juggly | |
| パズル | 53 | Where's My Water? Disney |
![]() 4.7 |
10万DL~ | 77円 | 8日目 | ||
| 54 | Apparatus Bithack |
![]() 4.6 |
50万DL~ | 218円 | 5日目 10日目 |
|||
| 55 | Train Conductor 2: USA The Voxel Agents |
![]() 4.6 |
5万DL~ | 155円 | 8日目 | |||
| 56 | Toki Tori polarbit |
![]() 4.2 |
5万DL~ | 99円 | 3日目 | octoba | ||
| 57 | COLLAPSE! GameHouse |
![]() 4.2 |
10万DL~ | 99円 | 9日目 | |||
| 58 | Drop7 by Zynga Zynga |
![]() 4.1 |
5万DL~ | 234円 | 5日目 | |||
| 59 | TileStorm HD Jakyl |
![]() 4.1 |
10万DL~ | 99円 | 10日目 | |||
| 60 | TETRIS Electronic Arts Inc |
![]() 3.9 |
10万DL~ | 233円 | 3日目 | androider | ||
| 61 | Roll in the Hole Chillingo |
![]() 3.7 |
1万DL~ | 100円 | 7日目 | |||
| 62 | もじとも☆ Zynga |
![]() 3.6 |
1万DL~ | 207円 | 5日目 | |||
| カジュアル | 63 | Jenga NaturalMotionGames Ltd |
![]() 3.8 |
10万DL~ | 245円 | 6日目 | octoba | |
| メディア & 動画 |
64 | SketchBook Mobile Autodesk Inc. |
![]() 4.6 |
10万DL~ | 155円 | 1日目 8日目 |
tabroid | |
| レース | 65 | Reckless Getaway polarbit |
![]() 4.5 |
10万DL~ | 154円 | 3日目 | octoba | |
| 66 | MX Moto Camel Games |
![]() 4.2 |
10万DL~ | 154円 | 9日目 | |||
| 67 | Shine Runner Vector Unit |
![]() 4.2 |
10万DL~ | 170円 | 10日目 | |||
| 68 | Reckless Racing polarbit |
![]() 4.1 |
10万DL~ | 155円 | 2日目 | |||
| 69 | Raging Thunder polarbit |
![]() 4.1 |
10万DL~ | 99円 | 6日目 | |||
| 70 | アスファルト6:Adrenaline HD Gameloft |
![]() 3.8 |
10万DL~ | 600円 | 1日目 5日目 |
famitsu | ||
| 71 | NEED FOR SPEED Shift Electronic Arts Inc. |
![]() 3.6 |
10万DL~ | 500円 | 4日目 | andronavi | ||
| 音楽 & オーディオ |
72 | SoundHound ∞ SoundHound Inc. |
![]() 4.7 |
50万DL~ | 450円 | 1日目 7日目 |
octoba | |
| 73 | Shazam Encore Shazam Entertainment Limited |
![]() 4.5 |
50万DL~ | 396円 | 4日目 8日目 |
|||
| 74 | doubleTwist AirSync doubleTwist ? |
![]() 4.2 |
10万DL~ | 579円 | 2日目 | juggly | ||
| 教育 | 75 | 星座表 Escapist Games Limited |
![]() 4.3 |
10万DL~ | 260円 | 2日目 10日目 |
andronavi | |
| 76 | Kids Learn to Read (Preschool) intellijoy |
![]() 4.2 |
1万DL~ | 99円 | 3日目 | |||
| 77 | Color & Draw for kids phone ed Tipitap |
![]() 4.0 |
5万DL~ | 99円 | 1日目 10日目 |
|||
| 78 | Color & Draw for kids HD Tipitap |
![]() 3.9 |
1万DL~ | 153円 | 8日目 | |||
| 79 | Toddler Tapping Zoo Tipitap |
![]() 3.8 |
1万DL~ | 99円 | 9日目 | |||
| 80 | Toddler Spanish: 100 words Tipitap |
![]() 3.5 |
1万DL~ | 99円 | 4日目 | |||
| 健康 & フィットネス |
81 | Endomondo Sports Tracker PRO Endomondo |
![]() 4.6 |
10万DL~ | 330円 | 1日目 6日目 |
||
| 82 | Instant Heart Rate - Pro Azumio Inc. |
![]() 4.3 |
10万DL~ | 99円 | 8日目 | |||
| 仕事効率化 | 83 | SwiftKey X Keyboard TouchType Ltd |
![]() 4.6 |
50万DL~ | 299円 | 1日目 9日目 |
||
| 84 | ezPDF Reader Unidocs Inc. |
![]() 4.6 |
10万DL~ | 230円 | 9日目 | |||
| 写真 | 85 | Paper Camera - アニメ - 漫画 映画 JFDP Labs LTD |
![]() 4.5 |
50万DL~ | 149円 | 1日目 4日目 |
octoba | |
| 86 | カメラZOOM FX androidslide |
![]() 4.4 |
50万DL~ | 389円 | 10日目 | octoba | ||
| 87 | Pano Debacle Software. |
![]() 4.0 |
10万DL~ | 235円 | 5日目 | |||
| 書籍 & 文献 |
88 | When I Get Bigger Oceanhouse Media, Inc. |
![]() 4.8 |
1万DL~ | 153円 | 7日目 | ||
| 89 | All By Myself - Little Critter Oceanhouse Media, Inc. |
![]() 4.8 |
1万DL~ | 153円 | 8日目 | |||
| 90 | Just Me and My Mom Oceanhouse Media, Inc. |
![]() 4.7 |
1万DL~ | 153円 | 6日目 | |||
| 91 | BB - Bedtime Battle Oceanhouse Media, Inc. |
![]() 4.6 |
1万DL~ | 304円 | 2日目 | |||
| 旅行 & 地域 |
92 | FlightTrack Mobiata |
![]() 4.3 |
10万DL~ | 413円 | 8日目 |
※上記データは 2011 年 12 月 18 日時点のものです
※パーミッションが気になる人は、念のため 「tSpyChecker」 などでアプリの権限を確認してから起動してください
あわせて読みたい
Android アプリケーションの(png)アイコンリソースをサイズ別に複数用意するのが大変なので、
リソースレベルでベクター(shape)記述できないか調べてみました。
※2011/12/16 追記:Launcherなどアイコンを必要とするアプリで上手く表示されない場合があるみたいです^^;
リソース
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:left="4dip"
android:top="4dip"
android:right="4dip"
android:bottom="4dip" />
<corners
android:radius="8dip" />
<gradient
android:type="linear"
android:startColor="#ffff0000"
android:centerColor="#ff00ff00"
android:endColor="#ff0000ff"
android:angle="45" />
</shape>
結果
![]()
AndroidManifest.xml ファイル <application> タグ android:icon 属性は、
png ファイル以外にも、(shape を含む)任意の drawable を指定しても反映されるようです。
しかしながら、layer-list を使用した複数の shape 描画ができなかったので、実用的には使えなさそうです。。。^^;
おまけ
layer-list のリファレンスのように 1 枚の画像リソースを重ねあわせ描画させることはできるみたいです。
※下図のアプリアイコンには 3 つの★が描画されていますが、使用している png 画像は 1 つです
![]()
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/star"
android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap
android:src="@drawable/star"
android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap
android:src="@drawable/star"
android:gravity="center" />
</item>
</layer-list>
あわせて読みたい

Android Advent Calendar 12 日目担当の adakoda です。
Android Market アプリ 100 億ダウンロードを記念して、
Galaxy Nexus(国内・16GBモデル) に、どれだけアプリケーションをインストールできるか試してみました。
結果、860 アプリ(約 3 GB超)をインストールすることができました!

インストールした全 860 アプリの一覧は、以下のリンク先ページから参照できます。
※一覧はプログラムを書いて自動生成しました
最後に・・・
『端末にアプリを限界までインストールすると、
標準アプリすら起動しない危険な状態に陥りますので、
決して真似しないでください』
\(^o^)/オワタ
Android 4.0 から標準の設定アプリに「CPU使用状況を表示」機能が追加されました。
この機能を有効にすると、画面右上に「現在のCPU使用状況」がオーバーレイ表示されます。
はっきり言って使われない機能だと思うのですが、以下の 2点 が気になったので調べてみました。
1. オーバーレイ表示される ○ / △ / □ の3つの数値の意味
2. オーバー例の方法
※最前面のオーバーレイ表示のレイヤーは、タッチしてもイベントを受け取らないようになっている
1. オーバーレイ表示される ○ / △ / □ の数値の意味
Linux における /proc/loadavg で表示される最初の3つの情報であり、
1つ目が「過去1分間」、2つ目が「過去5分間」、3つ目が「過去15分間」のCPU使用率となります。
※「adb shell cat /proc/loadave」でも表示可
2. オーバーレイの方法
com.android.systemui.LoadAverageService クラスに実装コードがありましたが、
通常のアプリでは、WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY を使用する権限がないため、
以下の実装を真似しても動作しませんでした。。。
package com.android.systemui;
// ・・・省略・・・
public class LoadAverageService extends Service {
private View mView;
// ・・・省略・・・
private class LoadView extends View {
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
// ここでオーバーレイしたい情報を描画
}
}
// ・・・省略・・・
@Override
public void onCreate() {
super.onCreate();
mView = new LoadView(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY, // <-
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
params.setTitle("Load Average");
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
((WindowManager)getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
// ・・・省略・・・
}
ちなみに、TYPE_SECURE_SYSTEM_OVERLAY のコメントは、以下のとおりです。
※hide を無視して定数あわせても駄目です
/**
* Window type: secure system overlay windows, which need to be displayed
* on top of everything else. These windows must not take input
* focus, or they will interfere with the keyguard.
*
* This is exactly like {@link #TYPE_SYSTEM_OVERLAY} except that only the
* system itself is allowed to create these overlays. Applications cannot
* obtain permission to create secure system overlays.
* @hide
*/
public static final int TYPE_SECURE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+15;
公開 API として一般のアプリ権限で使用できれば、使い道もあると思うのですが^^;
先日の以下のエントリの続きです。
その後、「新スクリーンセーバー?(DREAM)」について調べていたところ、
以下のソースツリーに、起動コード、サンプルコードを見つけました。
早速、起動コードだけ実行してみた
インストール済のアプリで、"android.intent.category.DREAM" に対応するアプリが列挙されるようで、
任意の項目をタップすると、スクリーンセーバーが起動しました^^;
ソースコード(起動コード抜粋)
package com.adakoda.android.hellodreamtheater;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class HelloDreamTheaterActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startActivity(Intent.createChooser(new Intent(Intent.ACTION_MAIN)
.addCategory("android.intent.category.DREAM"),
"Choose a screen saver:"));
finish();
}
}
ちなみに本エントリ冒頭の変なドロイド君(Android Roboto)画像は、
先の DreamTheater プロジェクトに収録されていた BouncyDroid というスクリーンセーバーです^^;
いち早くスクリーンセーバーに対応したい開発者は、同サンプルコードを読んで準備しておくと幸せかもしれません(棒
Android 標準ブラウザの HTML5 & CSS3 対応状況をバージョン毎に調べ、表にまとめてみました。
※2011/12/7 追記:
「はてブ」で御指摘いただきましたとおり、色でしか識別できない図になっておりましたので修正いたしました。
配慮が不足しており申し訳ありませんでした。 m_ _m
調査に使用したサイト
調査に使用した Android 端末
調査結果
Android 4.0 の将来のバージョンでは「Dream」(※1)と呼ばれる新しいスクリーンセーバーが搭載されるようです。
国内版の Galaxy Nexus (Android 4.0.1)で確認したところ、
同スクリーンセーバー用と思われる画面が、既に 2 つほど組み込まれていました。
現状、これらの画面を呼び出すための管理画面は搭載されていないようですが(※4)、
アクティビティーで実装されているため、以下のようなインテントを発行することで、画面を表示することができます。
adb 経由で RocketLauncher を起動する方法
adb shell am start -n com.android.launcher/com.android.launcher2.RocketLauncher
adb 経由で Nyandroid を起動する方法
adb shell am start -n com.android.systemui/com.android.systemui.Nyandroid
ソースコードを書いてアプリ(apk)から起動する方法
package com.adakoda.android.hellorocketlauncher;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
public class HelloRocketLauncherActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
// RocketLauncher
{
intent.setComponent(new ComponentName(
"com.android.launcher",
"com.android.launcher2.RocketLauncher"));
}
// Nyandroid
// {
// intent.setComponent(new ComponentName(
// "com.android.systemui",
// "com.android.systemui.Nyandroid"));
// }
startActivity(intent);
finish();
}
}
ちなみに、Android Market には、すでに RocketLauncher を呼び出すだけのアプリが公開されていました^^;
Android Market
Dream (新スクリーンセーバー?)について
新しいスクリーンセーバーのベースクラスは、
frameworks\support\v13\java\android\support\v13\dreams\BasicDream.java
に準備されており、
RocketLauncher では、BasicDream クラスを継承して実装されています(仕組みは意外と単純)。
packages\apps\Launcher2\src\com\android\launcher2\RocketLauncher.java
Nyandroid の方は、BasicDream クラスを継承していないようですが、
AndroidManifest.xml に、Dream 用と思われるカテゴリが定義されているため、Dream コンテンツの一種ではないかと思われます。
android.intent.category.DREAM
今後のバージョンアップが楽しみですね!
※1 : HTC Dream (Android Dev Phone 1)でも電脳羊でもありません
※2 : アイコンタップでタップしたアイコンを起動できるスクリーンセーバー兼ランチャー
※3 : 「設定アプリ > 端末情報 > Android バージョン連打 > NyanCat 超長押し」でも起動できます
※4 : 正確には、管理画面は実装されていますが、一部のコードがコメントアウトされていたり、完全なソースコードは提供されていませんでした
Galaxy Nexus では、気圧計センサー(Sensor.TYPE_PRESSURE)を搭載しているようです。
早速、気圧の値を取得するソースコードを書いてみました。
ソースコード
package com.adakoda.android.sensortest;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import com.adakoda.android.sensortest.R.id;
// ※紙面の都合上、エラー処理などは省略しています
public class SensorTestActivity extends Activity implements SensorEventListener {
private TextView mTextView;
private SensorManager mSensorManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 結果を表示するためのテキストビュー
mTextView = (TextView) findViewById(id.value);
// センサーマネージャー取得
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
// センサーリスナー登録
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
// センサーリスナー登録解除
mSensorManager.unregisterListener(this);
super.onPause();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PRESSURE) {
// 例えば小数点以下3桁表示
String value = String.format("%.3f hPa (millibar)", event.values[0]);
mTextView.setText(value);
}
}
}
リソース
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/value"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
結果

手元に気圧計がなかったので、値の正確性は不明なのですが、
などで、ご近所を見た限りでは、なんとなく近い値でした。
『誰か、Twicca プラグイン作ってくれないかなぁ~^^;』(ぼそっ
あわせて読みたい