電源オフ時の充電中(charger mode)画像を差し替えてみました。

充電完了(100%)時、幸せになれます。

imas.png

 

差し替えたファイル

  • android-4.0.3_r1\system\core\charger\images\battery_*.png

res_battery.png

※上記キャプチャの一番上の段がAOSPオリジナル画像、二番目の段が差し替えた画像

 

あわせて読みたい

これまで、Android のセキュリティーについて、まとまった書籍がなかったのですが、

それも昨日までのこと。。。

 

まるごと一冊 Android のセキュリティーに特化した

 「Android Security 安全なアプリケーションを作成するために

という書籍が、本日(2011年12月29日)発売されます(祝)!

 

AndroidSecurity.jpg

 

書籍の内容としては、Android のセキュリティーアーキテクチャから始まり、

Android を理解する上で重要である File SystemPermissionIntentServiceContentProviderBroadcast

ProGuardLVL暗号化Device AdministrationAccount 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などアイコンを必要とするアプリで上手く表示されない場合があるみたいです^^;

 

リソース

  • drawable / icon.xml

<?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>

 

結果

app_icon1.png

 

AndroidManifest.xml ファイル <application> タグ android:icon 属性は、

png ファイル以外にも、(shape を含む)任意の drawable を指定しても反映されるようです。

しかしながら、layer-list を使用した複数の shape 描画ができなかったので、実用的には使えなさそうです。。。^^;

 

おまけ

layer-list のリファレンスのように 1 枚の画像リソースを重ねあわせ描画させることはできるみたいです。

※下図のアプリアイコンには 3 つの★が描画されていますが、使用している png 画像は 1 つです

app_icon2.png

  • drawable / icon.xml

<?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 Market.png

Android Advent Calendar 12 日目担当の adakoda です。

Android Market アプリ 100 億ダウンロードを記念して、

Galaxy Nexus(国内・16GBモデル) に、どれだけアプリケーションをインストールできるか試してみました。

 

結果、860 アプリ(約 3 GB超)をインストールすることができました!

storage.png


インストールした全 860 アプリの一覧は、以下のリンク先ページから参照できます。

『Installed My Android Applications』

※一覧はプログラムを書いて自動生成しました

 

  • 2011/12/12 修正
    ・・・大量のアプリ画像・QRコード画像により、サーバ負荷が異常に高い状態が続いため画像を除去しました><。。。
      そっ、そのうちカテゴリ分けして説明書いて、もっと使えるようにするんだ><。。。
      そうしないと、検索→Android Market→アプリインストールする簡単なお仕事を死ぬほど繰り返したボクがうかばれない。。。
  • 2011/12/14 再修正
    ・・・大量のテーブルをエントリに本文に記述すると RSS の生成に失敗していため、別ページに分離しました><。。。
      あっ、まだ端末初期化終わってませんよ。。。

 

最後に・・・

 

端末にアプリを限界までインストールすると、
 標準アプリすら起動しない危険な状態に陥りますので、
 決して真似しないでください

 

\(^o^)/オワタ


load_average.png

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 として一般のアプリ権限で使用できれば、使い道もあると思うのですが^^;

sample.png

先日の以下のエントリの続きです。

 

その後、「新スクリーンセーバー?(DREAM)」について調べていたところ、

以下のソースツリーに、起動コード、サンプルコードを見つけました。

  • packages\experimental\DreamTheater

 

早速、起動コードだけ実行してみた

インストール済のアプリで、"android.intent.category.DREAM" に対応するアプリが列挙されるようで、

任意の項目をタップすると、スクリーンセーバーが起動しました^^;

dream.png

 

ソースコード(起動コード抜粋)

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 1.6 (Donut) / HT-03A
  • Android 2.1 (Eclair) / Xperia
  • Android 2.2 (Froyo) / HTC Desire
  • Android 2.3.6 (Gingerbread) / Nexus S
  • Android 3.1 (Honeycomb) / Galaxy Tab
  • Android 4.0.1 (Ice Cream Sandwich) / Galaxy Nexus

 

調査結果

 

 

 

 

 

 

 

 

 

RocketLauncher.png Nyandroid.png

Android 4.0 の将来のバージョンでは「Dream」(※1)と呼ばれる新しいスクリーンセーバーが搭載されるようです。

国内版の Galaxy Nexus (Android 4.0.1)で確認したところ、

同スクリーンセーバー用と思われる画面が、既に 2 つほど組み込まれていました。

  • RocketLauncher ※2
  • Nyandroid ※3

 

現状、これらの画面を呼び出すための管理画面は搭載されていないようですが(※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 : 正確には、管理画面は実装されていますが、一部のコードがコメントアウトされていたり、完全なソースコードは提供されていませんでした

GalaxyNexuSpec.png

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>

 

結果

SensorTypePressure.png

 

手元に気圧計がなかったので、値の正確性は不明なのですが、

気象庁 | アメダス(表形式)

などで、ご近所を見た限りでは、なんとなく近い値でした。

 

誰か、Twicca プラグイン作ってくれないかなぁ~^^;』(ぼそっ

 

あわせて読みたい

<<前のページへ 1234567891011

2016年8月

  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 31