Android Things Tutorial(五)使用Android ADB工具管理Android Things << 前情
在開始執行接下來的內容之前,必須先確定下列的項目:
建立Android Things App專案
Android Things App的開發、執行與測試,同樣在Android Studio中執行,依照下列的步驟建立Android Things App專案(全部的操作可以參考最後面的示範影片):
- 啟動Android Studio。
- 選擇「Start a new Android Studio project」。
- 在New Project視窗輸入下列需要的資訊,完成後選擇「Next」:
- Application name: 應用程式名稱,例如「Hello Android Things」。
- Company domain: 公司或個人的網域名稱,例如「hello.com」。
- Project location: 專案儲存的位置。
- 在Target Android Devices視窗,勾選「Phone and Tablet」,Minimum SDK選擇「API 24: Android 7.0(Nougat)」,最後選擇「Next」。
- 在Add an Activity to Mobile視窗,選擇「Empty Activity」後選擇「Next」。
- 在Customize the Activity視窗輸入下列需要的資訊,完成後選擇「Finish」:
- Activity Name: Activity元件的類別名稱,使用預設的名稱「MainActivity」,或是依照應用程式的功能,輸入一個自己決定的名稱,例如「HelloActivity」。
- 取消勾選「Generate Layout File」。
- 取消勾選「Backwards Compatibility (AppCompat)」。
build.gradle (Module:app)
Android Things App專案必須加入Android Things程式庫的設定,開啟應用程式專案Gradle建置檔案「Gradle Scripts -> build.gradle (Module:app)」,在「dependencies」加入需要的設定。注意下列幾個設定的説明:
- compileSdkVersion與buildToolsVersion可能會不一樣,建議使用「25」與「25.0.2」
- applicationId是應用程式的主要套件名稱,在你建立專案的時候決定的
- minSdkVersion必須設定為「24」
- targetSdkVersion可能會不一樣,建議使用「25」
- 在dependencies區塊加入Android Things程式庫,最後的「0.3-devpreview」是Preview 3的名稱,未來隨者版本的變化,需要修該為最新的版本
參考下列的內容執行需要的設定(全部的操作可以參考最後面的示範影片):
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "..."
minSdkVersion 24
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
provided 'com.google.android.things:androidthings:0.3-devpreview'
}
修改這個設定檔以後,必須選擇功能表「Tools -> Android -> Sync Project with Gradle Files」,或是選擇右上角的「Sync Now」,修改的設定才會生效。
AndroidManigest.xml
Android Things App專案必須加入Android Things程式庫的設定,開啟應用程式專案設定檔案「App -> manifests -> AndroidManigest.xml」,注意下列幾個設定的説明:
- Android Things App可以移除下列application預設的設定:
- android:roundIcon
- android:supportsRtl
- android:theme
- 在application加入users-library設定
- 如果在Android Things裝置啟動以後就要自動啟動的App,可以在activity加入intent-filter的設定
參考下列的內容執行需要的設定(全部的操作可以參考最後面的示範影片):
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidthings.myproject">
<application
android:allowBackup="true"
android:icon="@android:drawable/sym_def_app_icon"
android:label="@string/app_name">
<!-- 加入Android Things程式庫 -->
<uses-library android:name="com.google.android.things"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 如果需要在系統啟動後自動執行應用程式,加入下面的intent-filter設定 -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.IOT_LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
Activity類別
Android Things App的主程式也是一個Activity類別,不過它並不需要畫面,所以就沒有跟畫面相關的程式與畫面配置檔。
Android Things App的主程式繼承自android.app.Activity類別,需要覆寫下列主要的生命週期方法:
- onCreate:一般的工作都在這裡完成,例如建立需要的GPIO物件
- onDestroy:執行物件清除與關閉的工作,例如關閉在onCreate方法建立的GPIO物件
參考下列的範例程式,在onCreate方法加入顯示裝置作業系統名稱與硬體架構程式碼(全部的操作可以參考最後面的示範影片):
package net.macdidi5.at.helloandroidthings;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import java.util.Properties;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
// 取得與顯示裝置作業系統名稱與硬體架構
Properties ps = System.getProperties();
Log.d(TAG, "os.name: " + ps.getProperty("os.name"));
Log.d(TAG, "os.arch: " + ps.getProperty("os.arch"));
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
}
執行Android Things App
完成第一個Android Things App專案,在執行專案之前,先確定已經執行下列的指令,使用ABD連線到Raspiberry Pi:
adb connect 你的Raspiberry Pi IP位址
畫面顯示下列的訊息,表示已經連線成功:
connected to 你的Raspiberry Pi IP位址:編號
使用ADB連線成功後,檢查Android Studio的Android Monitor,就可以看到「Unknown Iot_rpi3 Android 7.0, API 24」的設備。執行應用程式,選擇已連線的設備「Unknown Iot_rpi3 (Android 7.0, API 24)」,Android Studio在執行一些需要的工作以後,把App安裝到Raspberry Pi並啟動。檢查logcat訊息,作業系統(os.name)顯示「Linux」,硬體架構(os.arch)顯示「armv7l」(全部的操作可以參考最後面的示範影片):
02-08 07:18:00.171 1198-1198/? D/MainActivity: onCreate
02-08 07:18:00.171 1198-1198/? D/MainActivity: os.name: Linux
02-08 07:18:00.171 1198-1198/? D/MainActivity: os.arch: armv7l
建立與執行Android Things App示範影片
下一步
瞭解Android Things App專案的建立、執行與測試以後,接下來認識硬體GPIO、PWM、IIC與SPI的基本概念,準備開始設計嵌入式與物聯網的應用程式。
http://github.com/macdidi5/Android-Things-Tutorial
後續 >> Android Things Tutorial(七)認識Raspberry Pi的GPIO與基本零件
|