SlideShare a Scribd company logo
組込み用途における「Acty-G3」アプリ開発の実例
CYBERDYNE Omni Networks
Acty-G3とは?
• Android10 Goを採用。
• Andorid用のアプリが動作する。
• 画面や操作デバイスがない。
開発環境
• Androidであるため専用のSDKはない。
• GoogleからAndroid Studioをダウンロードすれば開発を始められる。
• デベロッパー向け公式サイト Android Developers
• 個人・法人を問わず多くのアプリの開発が行われており、情報の収集
が容易。
• XDA DevelopersやStack Overflowといったコミュニティサイトも有用。
SORACOM Harvestアプリ概要
GPS Tracker connected with SORACOM
• 位置情報の取得。
• 取得した情報をサーバに送信。
• 電源オン後、アプリは自動的に起動。
• ただし開始と停止はボタンで操作。
• 動作状態をLEDで表示。
位置情報を取得して送信する
• GPS信号はAndroidが受信しているので、アプリは定期的にそれを受
け取るだけ。
• 位置情報はGPS信号のほかに、Wi-Fi、基地局といった情報も加味す
る必要がある。
• FusedLocationProviderを使用すれば、状況に応じてそれらをアプリ側
で調整する必要はない。
• データはJSON形式に整えてhttp clientで送信。
ボタンの検出
ブロードキャストレシーバーを立ててIntentを受け取る
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive intent=" + intent.getAction());
if(intent.getAction().equals("covia.intent.action.BUTTON1_SHORT_PRESS")){
Log.d(TAG, "Receive covia.intent.action.BUTTON1_SHORT_PRESS !!!");
if (!isWorking) {
startTesting();
} else {
stopTesting();
}}}};
LEDの制御
制御ファイルに書き込み
public void Led1_RedOn() {
try {
File file=new File("/sys/class/leds/led1-red/brightness");
FileOutputStream fos=new FileOutputStream(file) ;
fos.write(String.valueOf("255").getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}}
アプリの動作まとめ
• BOOT_COMPLETEを受けてアプリは自動起動。
• ボタンによって動作の開始/停止。
• LEDで動作状態を表示。
• FusedLocationProviderで位置情報を取得。
• 得られたデータをhttp clientで送信。
  ファンクションボタンとLEDの制御だけがG3固有の実装
ネット以外に参考になるものは?
• 位置情報(GPS)の取得アプリ
• ファンクションボタンの制御アプリ
• LEDの制御アプリ
• Beaconの取得アプリ
全てサンプルアプリとソースコードを提供
位置情報を取得して送信する
 最低限のUIは用意。
 送信周期と送信期間の設定。
 操作はPCからVysorやscrcpyなど
の画面転送ソフトを利用。
車載GPSトラッカーの例
• エンジンスタートと連動して起動させたい。
• エンジンストップ後はシャットダウンさせたい。
• つまり、ドライバーの操作を不要にしたい。
このためには、電源周りの制御が必要になる。
• 外部電源供給による自動的な電源オン。
• 任意のタイミングでのシャットダウン/再起動。
DC入力連動ブート
• ファームウェアレベルでサポート。
• 外部電源が供給されるとG3を自動的に起動させる。
シャットダウンさせるには?
エンジンが停止すると?
 → バッテリー動作に切り替わる。
 →アプリから充電状態を検出して、 Dischargingになったら
  シャットダウンすればよい。
しかし、問題が・・・
  ユーザーアプリはシャットダウンを実行できない。
Permission(権限)
• Normal , Dangerous , Signatureの3段階。
• アプリは機能に応じたPermissionを宣言する必要がある。
• ネットワークを使うには INTERNETを宣言=Normal Permission
uses-permission android:name="android.permission.INTERNET"
• GPSを使うにはACCESS_FINE_LOCATIONを宣言=Dangerous Permission
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
• ユーザーアプリから使えるのは、NormalとDangerousまで。
Signature Permission
• Signature権限を使うにはPlatform Keyが必要。
• 通常はPlayストアなどのGoogleアプリや端末メーカーがプリインストー
ルで提供するアプリにしか許可されない。
• 電源周りの制御にはAndroidManifestで特権ユーザーの宣言する。
android:sharedUserId="android.uid.system"
  
  これには Signature権限が必要になる
Platform Key
• アプリ開発者向けに提供。
• アプリからシャットダウンや再起動が可能になる。
• Signature権限を必要とする他の機能も利用可能。
• 例えばIMEIの取得には、READ_PRIVILEGED_PHONE_STATEを宣言
するが、これにもSignature権限が必要となる。
Runtime permission
• Android6.0からの仕様。
• Dangerous permissonを要求した場合、
アプリ起動時に承認を求める。
• 特権ユーザーになることで回避可能。
アプリのセルフアップデート
• アップデート機能は必須。
• Playストアも利用可能だが、端末1台ごとににGoogleアカウントの設
定が必要となる。
• 運用台数が多いほど現実的ではない。
• 独自にアップデートサーバを用意。
• バックグラウンドインストールを使用すべきだが、これにはシステム
と同じ権限が要求される。
スケジュールによる起動
特定の時間内だけ動作させたい
• 店舗や倉庫の営業中だけ。
• バッテリーを節約するため指定された時間内だけ。
AlarmManagerの拡張で対応 ※指定した時間後にG3を起動させる
alarmmanager.setExact(7, cal.getTimeInMillis(), pendingintent);
この拡張についてのドキュメント、サンプルアプリとソースコードも提供。
補助アプリ
• アプリのインストール/アップデートの補助。
G3_Help_Install_APK
• シャットダウン、再起動、指定時間後の起動を補助。
G3_Help_Shutdown
 アプリからintentを送ることによって、それぞれの機能を呼び出す。

More Related Content

Similar to 20210720 device meetup #4 about Acty-G3

What's new in Android N at Google I/O extended in Fukuoka
What's new in Android N at Google I/O extended in FukuokaWhat's new in Android N at Google I/O extended in Fukuoka
What's new in Android N at Google I/O extended in Fukuoka
Yuki Anzai
 
Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?高見 知英
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
Masayuki Abe
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
Masahiko Tani
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用
Lumin Hacker
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介Kenichi Kambara
 
AndroidでGeoFenceを使って見る
AndroidでGeoFenceを使って見るAndroidでGeoFenceを使って見る
AndroidでGeoFenceを使って見る
Katsuki Nakatani
 
Androidアプリ販売への道
Androidアプリ販売への道Androidアプリ販売への道
Androidアプリ販売への道
Yoshinori Kamaishi
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法
Yasuyuki Kamata
 
androidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワンandroidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワン
Katsuaki Sato
 
Gennymotion
GennymotionGennymotion
Gennymotion
Hashimoto Hisashi
 
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
Tadaaki Akai
 
Android端末のroot化について
Android端末のroot化についてAndroid端末のroot化について
Android端末のroot化について
Shuichi Takaya
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshopYoichiro Sakurai
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
leverages_event
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
 
[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門
Kenichi Kambara
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
mokelab
 

Similar to 20210720 device meetup #4 about Acty-G3 (20)

What's new in Android N at Google I/O extended in Fukuoka
What's new in Android N at Google I/O extended in FukuokaWhat's new in Android N at Google I/O extended in Fukuoka
What's new in Android N at Google I/O extended in Fukuoka
 
Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
 
AndroidでGeoFenceを使って見る
AndroidでGeoFenceを使って見るAndroidでGeoFenceを使って見る
AndroidでGeoFenceを使って見る
 
Androidアプリ販売への道
Androidアプリ販売への道Androidアプリ販売への道
Androidアプリ販売への道
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法
 
androidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワンandroidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワン
 
Gennymotion
GennymotionGennymotion
Gennymotion
 
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
Android Wearって何?-Android Wearの概要と仕組み-(オープンセミナー 2014 at 香川発表資料)
 
Android端末のroot化について
Android端末のroot化についてAndroid端末のroot化について
Android端末のroot化について
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
 

Recently uploaded

Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 

Recently uploaded (6)

Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 

20210720 device meetup #4 about Acty-G3