Android Studio で仮想デバイス(エミュレーター)の利用手順

Android Studioをインストールしてもエミュレーターでプログラムの動作を確認するまでいくつか必要な作業があります。
プログラムのプロジェクトを実行して動作を確認するのが目的なのでソースを読み込ませるところから説明します。

以下のサンプルプログラムで説明します。



参照:IRKit赤外線送信サンプルアプリ(Android)


1.プログラムのプロジェクトを開く

プログラムのプロジェクトを開くまでの手順になります。
Android Studio を起動して「既存の Android Studio プロジェクトを開く」をクリックします。

ソースを解凍したフォルダの「My Application5」プロジェクト(Android Studioアイコンのファイル)を選択して「OK」ボタンをクリックします。


2.パッケージの更新

プロジェクトを開いてしばらくすると画面右下に表示される「更新」リンクをクリックします。

「更新」ボタンをクリックします。


3.SDKのセットアップ

画面左にある「プロジェクト」タブをクリックします。
ツリーにあるソースファイルを開くと「モジュールSDKが定義されていません」と表示されるので「SDKのセットアップ」リンクをクリックします。

リストを選択して「OK」ボタンをクリックします。


4.仮想デバイスの追加

「ツール」の「AVDマネージャー」メニューをクリックします。

「仮想デバイスの作成」ボタンをクリックします。

このみのデバイスでよいのですがとりあえず選択して「次へ」ボタンをクリックします。

下イメージの選択されているシステム・イメージの「Download」リンクをクリックします。

とりあえず推奨の2GBを選択しています。
メモリを多く搭載している場合は多めに選択すると性能的によくなります。
「次へ」ボタンをクリックします。

インストールが終わったら「完了」ボタンをクリックします。

使用条件の次に進んだらコンポーネント・インストーラーでインストールしますが1GB以上ダウンロードするので結構時間がかかります。
終了したら「完了」ボタンをクリックします。

ようやく選択したシステム・イメージが利用可能になりますので「次へ」ボタンをクリックします。

「完了」ボタンをクリックします。

仮想デバイスの一覧に作成したデバイスが表示されますので画面を閉じます。

これで「ツール」の「デバック」メニューをクリックしてプログラムを実行することができます。

Andorid Studio インストール(Windows)

WindowsでAndorid Studio 3.6.1 をインストールする手順をまとめまています。
インストーラのウィザードを対して数が多いのでまとめておくことにしました。

システム要件(この条件を満たせない環境では利用できません。)
・Windows 8/10(64-bit)
・最低限4 GB システム メモリ8 GB 以上推奨
・2GB ハードディスク空き容量(最低限)、4GB推奨
・1280 x 800 以上の画面解像度
※CPU Core i5(Cereron対象外)以上、SSDでないと遅くて使えません。


1.英語版インストーラダウンロード

インストーラをダウンロードサイトより取得します。

「出典元」Google Developers Android Studio


2.英語版インストール

android-studio-ide-192.6241897-windows.exe を実行して「Next」ボタンをクリックします。
※ダウンロードしたファイル名は、2020年3月16日時点です。

「Next」ボタンをクリックします。

ディスク構成に合わせてインストールする場所を合わせます。
不要であればそのままでよいです。
「Next」ボタンをクリックします。

「Install」ボタンをクリックします。

インストール完了したら「Next」ボタンをクリックします。

「Finish」をクリックします。

まだ終わらずこの画面が表示されます。
新規インストールの説明なので「Do Not Import Settings」を選択して「OK」ボタンをクリックします。

お約束の匿名で利用情報の収集に協力してくれというメッセージですね。
任意のボタンをクリックします。

 送る  :「Send usage statistcs to Google」をクリックします。
 送らない:「Don't send」をクリックします。

ここからは初期設定となります。
「Next」ボタンをクリックします。

「Standard」を選択して「Next」ボタンをクリックします。

好みのデザインを選択して「Next」ボタンをクリックします。

「Finish」ボタンをクリックします。

設定の適用が完了すると「Finish」ボタンをクリックします。

これで初期設定完了になりメニューが英語で起動します。
このあと日本語化するので画面を閉じます。


3.日本語化プログラム(プラグイン)のダウンロード

インストーラをダウンロードサイトより取得します。

「出典元」MergeDoc Project


4.日本語化プログラム(プラグイン)適用

setup.exeを実行「選択」ボタンをクリックして「studio64.exe」の場所を指定します。
 場所:C:\Program Files\Android\Android Studio\bin\studio64.exe

「日本語化する」ボタンをクリックします。

適用完了し「終了」ボタンをクリックします。

英語でなく日本語の表示にかわります。

IRKit赤外線送信サンプルアプリ(Android)自己証明書などへの応用

HTTPSでの暗号化通信に使用するサーバー証明書は開発時に自己証明書などで検証したりします。
また、ローカルネットワークではわざわざHTTPSを使わずHTTPで利用したりします。
せっかくなので作成したサンプルアプリを利用して説明します。



サンプルソースの使い方や説明は以下を参考にしてください。

 参照:IRKit赤外線送信サンプルアプリ(Android)
 参考:Andorid Studio インストール(Windows)


1.HTTPSで自己証明書を利用したWEBサーバーへのアクセス

MyAsync.java の 50~52行のコードが自前で証明書確認を行うための処理になります。
※このコードは毎回実行する必要はなく1度実行すればOKです。(すみません、書く場所まちがえました。)
※HTTP通信を行うのに「HttpsURLConnection」ではなく「HttpURLConnection」を使用します。

どこにでもあるお約束のコードですが NonAuth.java で証明書の確認処理をオーバーライドでにぎりつぶしています。


2.HTTPでWEBサーバーへのアクセス

MyAsync.java の 50~52行のコードが不要になるので削除します。


例外は発生しなくなるので 84~89行のコードを削除します。

IRKit赤外線送信サンプルアプリ(Android)

アンドロイド用のIRKit赤外線送信アプリのサンプルを作成しました。
IRKit赤外線送信信号をアンドロイドアプリからIRKitサーバーへ送信する単純なプログラムになります。

アプリの利用イメージ

アプリの画面




サンプルプログラムは、Android Studio 3.6.1で作成して Android 7.1.1 のエミュレーターと実機で動作確認しています。

他に参考になりそうな内容を記載します。

 参考:IRKit赤外線送信サンプルアプリ(Android)自己証明書などへの応用
 参考:Andorid Studio インストール(Windows)


1.サンプルプログラムの使い方

プログラムの実行には環境以外で以下の用意が必要です。
MainActivity.javaソースコードの行37~39の箇所を書き換えます。

・トークンで取得したクライアントキー
・トークンで取得したデバイスID
・IRKitに送信する信号(ダブルコーテーションはエスケープします。)

書き換える内容の説明は以下のページに記載しています。

参照:IRKit(学習リモコン)コマンド送信(API利用した屋外からのアクセス)

 

(1)ソースコード修正

クライアントキー、デバイスID、送信信号をソースに記述します。

 

(2)ソースコード実行

Android Studio の「実行」の「デバッグ」メニューをクリックします。

エミュレーターでアプリが起動されて送信ボタンが利用可能になります。

 

2.サンプルプログラムの説明

サンプルプログラムの特徴を処理の流れにそって説明します。

(1)権限

インターネットのアクセス権限を AndroidManifest.xml の 5行目で付与してます。
権限:<uses-permission android:name="android.permission.INTERNET" />

(2)デザイン

画面のデザインは、送信ボタンと処理結果を表示するラベルと単純な構成です。


項目の情報は以下の通りです。

コントロール ID text
TextView @+id/label1 Hello World!
Button @+id/button1 送信

(3)コード

MainActivity.java では送信ボタン押した時には、「リクエスト実行中...」とラベルに表示します。
その後、バッググランドの別スレッドでリクエストを実行して送信完了となり結果を表示します。

MyAsync.java ではバックグランドスレッドでリクエストを実行して処理終了後に結果をラベルに表示します。

以下の通りHTTPSリクエストでPOSTしておりお約束なコードとなっています。

屋内のアドレスのIRKitへ直接送る場合は、HttpsURLConnectionではなくHttpURLConnectionを使用します。

WordPress投稿ページからのダウンロード(WordPress Download Manager)

ファイル(ZipやPDFなど)を投稿ページからダウンロードするプラグイン(WordPress Download Manager)を導入します。
※WordPress Download Managerプラグインはダウンロードファイルサイズが扱えるファイルが5MBと小さいのです。
※日本語ファイル名をアップするとダウンロード時に文字化けします。

プラグインの導入方法は以下のページに記載していますので導入手順は省略します。

参照:WordPressでプラグインの追加方法

ダウンロードするにはダウンロードページを作成してリンクを埋め込む手順となります。


1.ダウンロードページの作成

WordPress管理者でログインして「Downloads」の「Add New」をクリックします。
ダウンロードするファイルのタイトルと説明を記入します。

ダウンロードするファイルを「Drop file heare」へドロップします。

「公開」にある「更新」をクリックして保存します。
「Downloads」の「All Files」をクリックします。

作成された「Short-code」の値をメモします。


2.ダウンロードページの埋込

作成する投稿の編集するページにメモした「Short-code」の値を「テキスト」で記述します。

プレビューすると以下のように表示されます。

ダウンロードするファイルの説明のリンクをクリックすると説明のページを表示します。

コピペでダブルコーテーションやシングルコーテーションが勝手に変換される

WordPressの仕様だなんて知りませんでした。
コード例記載しているのにコピペしたら半角が全角になっていてびっくり!
調べて変換されないように対応しました。

 
WordPressの管理者でログインして「外観」の「テーマエディター」をクリックします。
「テーマのための関数 (functions.php)」をクリックします。

 
2行目のコードを追記して下方にある「ファイルの更新」をクリックします。
コード:remove_filter("the_content", "wptexturize");

 
これでコピペしても半角が全角に変換されることがなくなります。

IRKit(学習リモコン)コマンド送信(API利用した屋外からのアクセス)

通信経路を図で表現してるけどわかりやすくするために簡略化しています。
IRKitサーバーを利用する方法をまとめます。

※屋外(屋内のネットワークへのアクセスはセキュリティ上、簡単に行えないようになっています。)からのアクセスはポーリングて方法でIRKitを中継して行われています。

IRKitのAPIを利用したコマンドの送信手順です。

コマンドはCurlを使用しています。
Windows10標準では入ってませんのでCurl導入は以下を参考にしてください。

参考:CurlをWindows10で使う

IRKitサーバーを利用せず直接IRKitに通信する場合は以下を参考にしてください。

参考:IRKit(学習リモコン)コマンド送受信(屋内からのアクセス)


1.IRKitのトークンの取得

Auoth2.0の面倒さですね。
コマンドでトークンを先に取得します。
clienttokenに表示された値をメモします。

コマンド:curl -i "http://{IRKitのアドレス}/keys" -d '' -H "X-Requested-With: curl"


2.トークンでデバイスIDとクライアントキーを取得

メモしたトークンを利用してコマンドでデバイスIDとクライアントキーを取得します。

コマンド:curl -i -d "clienttoken={メモしたトークン}" "https://api.getirkit.com/1/keys"


3.デバイスIDとクライアントキーでIRIRKitのPIを呼出

デバイスIDとクライアントキーでAPIにアクセスします。

コマンド:curl -i "https://api.getirkit.com/1/messages" ^
-d "clientkey=トークンで取得したクライアントキー" ^
-d "deviceid=トークンで取得したデバイスID" ^
-d "message={送信する信号}"

※注意!送信する信号のところをシングルコーテーションのまま囲って実行すると「400 Bad Request」のエラーが発生します。

IRKit(学習リモコン)コマンド送受信(屋内からのアクセス)

IRKitはAPIで操作可能になっておりいじりがいがあります。
なのでコマンド送受信についてまとめます。
本家の以下のサイトを参考にしています。

「出典元」http://getirkit.com/

コマンドはCurlを使用しています。
Windows10標準では入ってませんのでCurl導入は以下を参考にしてください。

参考:CurlをWindows10で使う


1.リモコンの信号をコマンドで受信

以下のコマンドでIRKitが学習したリモコンの信号を受け取ることができます。

コマンド:curl -i "http://{送信先IRKitのアドレス}/messages" -H "X-Requested-With: curl"

しかし、10分もしないうちに学習した信号は消されてしまいます。
以下のようにコマンドを実行しても何も表示されません。

学習させるリモコンを準備します。
「追加」を選択します。

学習させます。

コマンドを実行します。
IRKitが学習したリモコンの信号が表示されます。


2.リモコンの信号をコマンドで送信

送信するリモコンの信号を準備したら以下のコマンドでIRKitに送信できます。

コマンド:curl -i "http://{送信先IRKitのアドレス}/messages" -H "X-Requested-With: curl" -d '{送信するリモコンの信号}'

※送信するリモコンの信号に含まれるダブルコーテーションはWindowsなのでエスケープする必要があります。
 エスケープ前「{"format":"raw","freq":38,"data":[5049,5049,~ 以後省略」
 エスケープ後「{\"format\":\"raw\",\"freq\":38,\"data\":[5049,5049,~ 以後省略」

CurlをWindows10で使う

Curlは、HTTPなど様々なプロトコルでサーバーとコマンドでデータを転送することができます。
Windows10では標準で入っていないので入れちゃいます。
手順はダウンロードしたZIPを展開して使う場所におきPATHを通すだけなのですが一応まとめておきます。

「出典元」ダウンロードサイトURL https://curl.haxx.se/windows/
※2020年3月8日時点の内容です。
バージョンが新しくなり変わっている場合があります

 

1.Curlをダウンロードして配置

OSは64bitを使用しているので「curl for 64bit」リンクをクリックしてダウンロードします。
※32bitのOSを利用している場合は、「curl for 32bit」リンクをクリックします。
何bitかはコントロールパネルの「コントロール パネル\システムとセキュリティ\システム」にある「システムの種類」で確認できます。

画像クリックで拡大

ダウンロードしたZIPを解凍して中のフォルダを使用する場所(私はツール置き場を決めて使用しています。)に配置します。

 

2.Curlにパスを通す

Curlを配置した場所以外のフォルダから利用するのでいちいちパス指定するのが面倒です。
このため、パスを通して利用します。
コントロールパネルにある「システムの詳細設定」をクリックします。

「詳細設定」タブの下の方にある「環境変数(N)...」ボタンをクリックします。

画像クリックで拡大

「システム環境変数」の変数に表示されている「Path」を選択します。
「編集」ボタンをクリックします。

画像クリックで拡大

「新規」ボタンをクリックします。
Curlを配置したパスを入力して「OK」ボタンをクリックします。

以上で完了です。
実際に使っているところは以下の投稿記事です。

参考:IRKit(学習リモコン)コマンド送受信

 

IRKit(学習リモコン)の基本的な使い方

かなり便利なので昔に利用した赤外線リモコンでIRKitを久しぶりに利用することにしました。
見事に使い方を忘れてましたので記事にします。
※ルータに対して外部からアクセス可能にするような設定は行いません。

「出典元」maaash.jp IRKit - iPhone,iPadを使って外出先からエアコン等の家電を操作できる学習リモコン

使い方

1.リモコンアプリにIRKitを登録

Androidのリモコンアプリをダウンロードして起動します。
※DHCPで利用される場合が多いと思います。
 この時点でMACアドレスに対して固定IPを割り振るようにしておくとあとあと便利です。

「出典元」Nao lizuka IRKitシンプルリモコン

画像クリックして拡大

 

「追加」を選択します。

電源を入れて準備ができたら「次へ」を選択します。

IRKitが使用するSSID、セキュリティ、パスワードを入力して「次へ」を選択します。
※セキュリティの「WEP」は脆弱性がありますので利用しないでください。

IRKitのパスワードを入力して「OK」を選択します。
※「IRKitに接続できません。パスワードを確認して再度お試しください。」と表示される場合はIRKitのすぐそば(30cmほど)で再度試してください。

正常に登録されるとデバイスが表示されます。

2.リモコンアプリに学習させる使い方

リモコンアプリに学習から使用するところまでまとめます。
アプリ起動して画面左上に表示されるメニューを選択します。
「ボタン」を選択します。

学習させるリモコンを準備します。
「追加」を選択します。

学習させます。

信号の学習を完了するとボタンの登録ページが表示されます。
ボタン名を入力してすきなアイコンを指定したら「保存」を選択します。
※ボタンの位置はドラッグで調整可能です。

名前に「TV電源」と入力して保存した状態です。
ボタンを選択するとIRKitから学習した赤外線リモコンの信号が出力されます。