Androidの最近のブログ記事

[Android] Android Screen Monitor 3.00

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

PCからのキーボード操作に対応した Android Screen Monitor Ver.3.00 を公開しました。

 

asm3_large.PNG

競合する?別のツールでは昔から対応されていた機能なので、今さら・・・と言われるとショボーンなんですけど、それはそれで^^;

 

ちなみに、この機能は、@thorikawaさんが実装され、GitHub 上のリポジトリへPull Request(PR)していただいたものです。m_ _m

これまでの Google Code の方は、2014年1月以降ダウンロード機能がなくなる?らしいので、ソースコードは、GitHub へお引っ越しました。

branch は多数切っていますが、PR は development まで頂けると有り難いです(Mac版で初期表示のサイズがおかしいの絶賛放置してるし)。

 

 

もともと、このツールを作った時は、画面サイズが320x480(16bpp)の時代で、1フレームの転送サイズが300KBだったのですが、Nexus 5だと1920x1080(32bpp)なので7.9MB、さすがに使えないなー、というのが正直なところ。Galaxy Nexusの720x1280(32bpp)より大きい画面サイズでは使わないでね!

バッテリー残量の画像の確認って大変ですよね(約100枚あるし)。。。

放置したり、充電したり。。。

そんなあなたに朗報です。

以下のコマンドを実行すれば、電池残量0〜100%の画像をアニメーションで確認できます!

adb shell am broadcast -a com.android.systemui.BATTERY_LEVEL_TEST

※ただし、どのバージョンから対応しているかは未確認です^^

※ウィジェットの方は、タップしてあげないと反応してくれない場合もありました

 

詳しくは以下の動画(約40秒)を参照してください。

※ステータスバー左上と右上、そして、ホーム上の2つのウィジェットに注目!

 

このコマンドを使用すれば、開発者だけでなく、ユーザーも、購入したバッテリー残量アプリの表示確認が簡単にできますね!

screenrecordex.PNG

長時間録画できる screenrecord (名付けてscreenrecordex)を作りました。

といっても、ソースコードを1行変更して、最大録画時間を3分から60分に変更しただけですが^^;

 

試しに Shooting Star の画面を 1 時間録画してみたところ、約118MBのmp4ファイルが無事出力されました。

 

以下のサイトからビルド済バイナリをダウンロードできます。

※Nexus5(Androd 4.4)でのみ動作確認済です

 

ソースコード

※ライセンスは Apache License Version 2.0 です

 

FAQ

Q:「需要はあるの?」

A:「知りません。自分が使いたかっただけです。」

 

あわせて読みたい

Android 4.4.1で日本語環境で印刷すると落ちる不具合が修正されました。

ありがとう眼鏡パッチ。

 

 

あわせて読みたい

Android 4.4 の AppOps(アプリ別パーミッション設定アプリ) は設定画面から起動するメニューがありませんが、
以下のコマンドで起動することができました。

adb shell am start -n com.android.settings/com.android.settings.Settings \
 -e :android:show_fragment com.android.settings.applications.AppOpsSummary \
 --activity-clear-task --activity-exclude-from-recents

※-e の前の\(バックスラッシュ)はブログの画面幅の都合上入れていますが、下図のように\ なしの1行でも良いです
※コマンド実行前に設定アプリの画面が表示されていると上手くいかないので、画面が表示されていない状態で呼び出してください
※本呼び出しによる動作結果については自己責任でお願いします^^;
※追記(11/21):$AppOpsSummaryActivityは不要でしたので削除しました(あっても問題ないですが)
 その後の完璧な情報は「Android 4.3.1と4.4でAppOpsを呼び出す方法 | ブライテクノBlog」参照
※追記(11/22):@youten_redo さんがアプリにしてくれたよ!「AppOps for KitKat」
※追記(11/23):オプションを @chun_ryo さんの記事にあわせました

 

AppOps 画面

以前のバージョンと異なり、マルチペイン(位置情報/プライベート/メッセージ/メディア/端末)で表示されます。

p1.png

 

リストのアイテム(インストールされている任意のアプリ)を選択すると、
アプリが使用しているパーミッションが表示され、パーミッションのON/OFFを切り替えることができます。

detail.png

 

あわせて読みたい

  • Android 4.3 にアプリ別パーミッション設定の隠し機能が見つかる、有効化アプリ公開 - Engadget Japanese
  • Android 4.3 の隠し機能 AppOpsについていろいろ | ブライテクノBlog

※2013年11月20日現在、★19

 

あわせて読みたい

Android 4.4 KitKat で追加された Android SDK 付属の screenrecord でアプリを録画してみました。

以下、検証動画。

かなり滑らかです。アプリのプロモーションに重宝しそうです。

 

使い方

1. 録画してSDカードに保存する。

adb shell screenrecord /sdcard/output.mp4

2. Control + C で停止させる。

3. SDカードからファイルを取り出す

adb pull /sdcard/output.mp4 .

 

screenrecord

[Android] はじめてのuiautomator

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

Android Advent Calendar 2012 12月12日(表)担当の adakoda です。

本エントリでは、Android SDK Tools Rev.21 でサポートされた新しい UI テストフレームワークである uiautomator を使用し、

Android アプリケーションの UI テストケースを作成、実行する方法について解説し、

サンプルテストコードとして 「Android 標準の電卓アプリ上で足し算の結果を確認する」 テストケースを作成します。

※本エントリの内容は、「Android SDK Tools, Revision 21(21.0.1 rc1)」  「Android SDK Platform, API 17 (Android 4.2)」を対象とした内容となっています

 

uiautomator ツール

◆ テストプロジェクトを作成する

Eclipse 上で新規に「Java Project」を作成し、JUnit3、uiautomator.jar、android.jar ライブラリを追加することで作成できます。

【手順】

1. Eclipse を起動し、[File] > [New] > [Java Project] をクリックする。

2. [Create a Java Project] 画面で、[Project name] に作成したいプロジェクト名を入力し、[Next] をクリック。

3. [Java Settings] 画面、[Libraries] タブで [Add Library...] をクリック、

    [JUnit] が選択された状態で [Next] をクリック、[JUnit3] が選択された状態で [Finish] をクリック。

4. 同 [Java Settings] 画面、[Libraries] タブで [Add External JARs...] をクリック、

    インストールした Android SDK ディレクトリの platforms\android-17 下にある android.jar、uiautomator.jar を選択。

5. [Finish] をクリックすると、作成完了。

 

◆ テストクラスを作成する

UiAutomatorTestCase クラスを継承したクラスを作成し、テストメソッドを作成します。

※UiAutomatorTestCase クラスは、junit.framework.TestCase を継承したクラス

※具体的なテストクラスは、後述するサンプルテストコードで解説します

 

◆ ant を使用してビルドする

作成したプロジェクトを ant を使用してビルドするには、android コマンドを使用し、ant ビルドに必要なファイルを作成し、ビルドします。

【手順】

1. コマンドプロンプト/ターミナル上で 「android create uitest-project -n <name> -t <target> -p <path>」を実行する。

  ※<name> には、プロジェクト名 を指定する

  ※<target> には、「android list target」で表示される対象 API の Target ID を指定する

  ※<path> には、対象プロジェクトのパス を指定する

  例) 「android create uitest-project -n UIAutomatorSample -t 20 -p .」

2. プロジェクト下に「build.xml」ファイルが生成されていることを確認し、同ディレクトリで「ant build」を実行する。

 

◆ ビルドしたファイルを使用してテストを実行する

ビルドしてできた jar ファイルを adb コマンドで Android 端末に転送し、uiautomator ツールを使用してテストを実行します。

【手順】

1. 「adb push <ビルドして生成されたjarファイル> <転送先ディレクトリ>」を実行し、jar ファイルを Android 端末に転送します。

  例) 「adb push .\bin\UIAutomatorSample.jar /data/local/tmp」

2. 「adb shell uiautomator runtest <ビルドして生成されたjarファイル> -c <テストクラス>」を実行し、テストを実行する。

  例) 「adb shell uiautomator runtest UIAutomatorSample.jar  -c com.adakoda.android.uiautomatorsample.CalculatorTest」

 

◆ サンプルテストケース

ここでは、Android 標準の電卓アプリ上で足し算の結果を確認するテストケースを作成します。

テストのシナリオは、以下のとおりです。

【テストのシナリオ】

1. ホームボタンを押してアプリケーションランチャーを表示する。

2. アプリケーションランチャーから電卓アプリを起動する。

3. 電卓アプリの消去ボタンを長押しして、結果をクリアする。

4. 電卓アプリで「 1 」「 + 」「 2 」「 = 」ボタンをクリックし、結果が「 3 」であることを確認する。

 

◆ サンプルテストコード

package com.adakoda.android.uiautomatorsample;
import android.widget.TextView;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class CalculatorTest extends UiAutomatorTestCase {
    public void testAddition() throws UiObjectNotFoundException {
        // 1. ホームボタンを押してアプリケーションランチャーを表示する。
        getUiDevice().pressHome();
        // 2. アプリケーションランチャーから電卓アプリを起動する。
        UiObject allAppsButton = new UiObject(new UiSelector().description("アプリ"));
        allAppsButton.clickAndWaitForNewWindow();
        UiObject appsTab = new UiObject(new UiSelector().text("アプリ"));
        appsTab.click();
        // スワイプしながらアイテムを検索できるUiScrollableインスタンスを作成
        UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
        // スワイプ時のスクロール方向を水平方向に設定
        appViews.setAsHorizontalList();
        // アプリランチャーの子ビューから以下の条件を満たすUIオブジェクトを取得
        // 「クラス名が"android.widget.TextView"」、かつ、「テキストが"電卓"」
        UiObject targetApp = appViews.getChildByText(
                new UiSelector().className(TextView.class.getName()),
                "電卓");
        // 見つかったUIオブジェクト(ここでは電卓アプリアイコン)をクリックする
        targetApp.clickAndWaitForNewWindow();
        // 指定したパッケージ名のアプリの存在を確認する
        UiObject appValidation = new UiObject(
                new UiSelector().packageName("com.android.calculator2"));
        assertTrue(appValidation.exists());
        // 3.電卓アプリの"削除"ボタンを長押しして、結果をクリアする。
        UiObject buttonClear = new UiObject(new UiSelector().text("削除"));
        buttonClear.longClick(); // 長押し
        // 4. 電卓アプリで「 1 」「 + 」「 2 」「 = 」ボタンをクリックし、結果が「 3 」であることを確認する。
        // "1"ボタンを押す
        UiObject button1 = new UiObject(new UiSelector().text("1"));
        button1.click();
        // "+"ボタンを押す
        UiObject buttonPlus = new UiObject(new UiSelector().text("+"));
        buttonPlus.click();
        // "2"ボタンを押す
        UiObject button2 = new UiObject(new UiSelector().text("2"));
        button2.click();
        // "="ボタンを押す
        UiObject buttonEqual = new UiObject(new UiSelector().text("="));
        buttonEqual.click();
        // エディットテキストの値を取得する
        UiObject editText = new UiObject(new UiSelector().className("android.widget.EditText"));
        String textEditText = editText.getText();
        // 結果を確認する
        assertEquals(String.valueOf("3"), textEditText);
    }
}

 

◆ テスト実行結果(画面遷移)

上記テストコードを実行すると、以下の画面が自動的に遷移します。

home.png

0. テストを実行する前のホーム画面。

 

app1.png

1. ホームボタンを押し、アプリケーションランチャーが起動した画面。

 

app2.png

2. 自動的に水平スワイプが実行され、"電卓"というテキストのビューを探している画面。

 

calc1.png

3. 電卓アプリを起動し、削除ボタンを長押ししている画面。

 

calc2.pngcalc3.png

4. 「1」「+」「2」「=」ボタンを押して、「3」という結果となっていることを確認している画面。

 

uiautomatorviewer ツール

◆ UI コンポーネントのスキャンと解析を行う

uiautomator では、UiSelector クラスを使用して操作対象の UI を特定するのですが、

このための UI 解析ツールとして、uiautomatorviewer ツールが提供されています。

ツールを起動し、画面キャプチャ用のアイコン(左から2番目)を押すと、解析結果が表示され、

任意のビューの情報を表示させることができます。

 ※Windows 版は、Rev21.の bat ファイルに不具合があるため、21.0.1 rc1 でないと正常に動作しません

uiautomatorviewer.png

 

おわりに

uiautomator テストフレームワークは、まだまだ開発中のツールと思われるため、

本エントリで紹介した内容は、将来変更される可能性があります。

特に、ant ビルドの部分は、uibuild.xml ファイル内に <!-- todo: fix this --> と書かれているとおり、

ant test コマンドなどでもっと簡単にテストを実行できるようになると思われます^^;

 

◆ 参考リソース

 

◆ あわせて読みたい(Android Advent Calendar 2012 のテスト関連のエントリ)

先週くらいに、Twitter の TL 上で見たこともない TOEIC の点数が流れていましたので^^;

西野さんから献本していただいた書籍をご紹介。

 

『アプリケーションをつくる英語』

  • 発売日:2012/09/21発売
  • ページ数:328P
  • サイズ・判型:B5変型判
  • 著者:西野 竜太郎 著
  • ISBNコード:978-4-8443-3284-8
  • 定価:2,400円+税
  • URL:http://www.impressjapan.jp/books/3284

 

内容

  • 第1部 よく使う単語

辞書形式で単語の意味や例文、解説が書かれています。

通常の辞書と違って、エラーやヘルプなど、アプリ開発で必ず使う単語が、

分類別(1章から16章)にまとめられているので、効率的に探すことができます。

 

  • 第2部 構文パターン

「できます(可能)」「できません(不可能)」など、よく使う構文(※)の例文、解説が書かれています。

※「可能」「不可能」「可能性」「完了」「未完了」「成功・失敗」「現在」「予告」
 「指示」「推奨」「禁止」「質問・確認」「条件」「目的」「理由「」有無」「提示」

アプリケーションは、必ず何かしらのメッセージを表示することになるのですが、

ほとんどのものは、ここに書かれている構文で表現できるんじゃないかと思います^^

 

  • 第3部 英語ライティングとグローバリゼーション

基本的な英文法の解説から始まり、

「エリプシス」「キャプタリゼーション」などのUIメッセージの書き方、

アプリケーションを国際化する際の注意点、UI関連のガイドラインへのリンクなど、役に立つ資料が書かれています。

アプリケーション開発者には是非読んでほしい内容だと思います。

 

電子書籍版

電子書籍版は、達人出版会から購入できます。

http://tatsu-zine.com/books/english4app 

 「まず電書で、次に紙で」 という流れはいいですね。

まさに希望の光。

 

最後に

最近では、様々なプラットフォーム上で、開発したアプリケーションを簡単に全世界に公開できるようになっており、

英語対応は必須になっています。

本書は、まさに、そんな私たち開発者にとって必須の本だと思います。

開発者の時給を考えればなおさら。。。

 

 ところで、この値段で、ここまでノウハウを出して大丈夫なの^^;

日本最大級の開発コンテスト「MA8」の連動イベント、信州MashupCaravan&Meetup with GDG信州でライブコーディングしてきました。

 

内容としては、持ち時間15分内に、協賛企業の(REST)APIを使用して制限時間内にAndroidアプリを作るというもの。

 

結果は・・・

 

アプリは何とか完成したものの、持ち時間3~5分オーバー、

途中で時間が足りないことに気づいていたので、少し機能も減らしました。。。><

 

想定外だったのが、立ってタイピングしたせいか、両腕が安定しなくて、タイポを連発しまくったこと。

緊張はしてなかったのですが、手元は正直で、まー、とにかくタイピングのぎこちないことwww

(全体の5分の2くらいで、投げ出して、3分間クッキングみたいに完成品を出そうかと思ったほど。)

 

今回自分でやってみて、あらためてライブコーディングすらすらできる人、すごいなぁ、と感じました。。。

それでも、前日に練習した時に1時間かかったものが、その3分の1くらいでできたので良かったのと、

最後、無事、端末上で1回で動作した時、暖かい拍手を頂けたのが本当に嬉しかったですm_ _m

(来てくれた方々がいい人で良かったわー)

(来てくれた方々がいい人で良かったわー)

しろめ

 

教訓

  • ライブコーディングする場合は、立って練習せよ
  • プロジェクタの関係で画面の作業エリアが狭くなるので、1024x768くらいで練習せよ
  • トラぶった時に、気の利いたトークができるように、トークも磨け
  • 前日に InkScape 起動して萌絵(↓)描いて現実逃避する暇があったら練習せよ

 

jcromtan2.png

<<前のページへ 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