Android Studioから実機へインストールしてデバッグ

PCのAndroid Studioから実機(スマホやタブレッド機器)にUSBで接続してインストール後にデバッグ実行します。

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

サンプルプログラムの説明
 参照:IRKit赤外線送信サンプルアプリ(Android)

Android Studio の環境構築について
 参照:Andorid Studio インストール(Windows)(Android)
 参照:Android Studio で仮想デバイス(エミュレーター)の利用手順(Android)
  (仮想デバイスの追加以外の手順が必要です。)


1.実機のUSBデバック設定とPCへの接続

実機の設定で「開発者向けオプション」を選択します。
※USBデバッグの設定を有効にする方法はAndroid のバージョンによって設定方法が異なります。
 説明に使用した機器は、Android 7.1.1です。

「開発者向けオプション」をONにします。
つづいて「USB」デバッグをONにします。


2.実機とPCの接続

実機(Androidアプリをインストールしてデバッグ実行)とPC(Android Studio)をUSBケーブルで接続します。
※注意!USBケーブルはデータ転送用を使用します。充電用は使用できません。
接続後、メッセージが表示されるので実機のロックを解除して「OK」を選択します。

このメッセージも表示されますが、「はい」でも「キャンセル」でも動作に支障ありません。
また、メッセージの表示順は順不同です。


3.インストールとデバッグ実行

Android Studio に接続した実機のデバイス名が表示されるので選択します。
「ツール」の「デバッグ」メニューをクリックします。

実機に実行したアプリが表示されます。

これで実機にアプリがインストールされた状態になります。
USBケーブルを外してもアプリを終了してもアプリは実行可能で利用できます。

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を使用します。

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から学習した赤外線リモコンの信号が出力されます。

Fire TV へ動画キャスト

スマホから動画が Fire TV にキャストして見れるといいなとふと思いついて調べたら残念ながら自分の機種は使えなかった。。。

 

・iPhone/iPad は Fire TV プレイヤーのアプリ別途が必要らしい

・Androidはキャスト機能(画面のキャストメニューから利用)がOSに標準装備(Ver6~はOKみたい、5は調べてません)

・Google Home のAndroidアプリでキャストできたらしい(「画像や音声をキャスト」メニューが無くなっている)

 

いろいろぐぐって試したがバージョンによって Fire TV も Android も手順が変わってて素直に操作させてくれない。。。

使用している AndroidではOSのキャスト機能が使えないことが判明。。。

Google Home に至っては画面が変わりすぎてキャストらしきところ見つけても使えなかった。。。

3分でできそうな作業なのに妙に時間がかかるのでブログすることにしたんだけど毎度のことながら仕方ないけど困ったものです。

 

結局、キャストアプリを使うことにしました。トラブルなくすんなり使えました。(2020年2月11日)

Google Play からインストールできます。(「出典元」Google Play)