Android Things Tutorial(六)第一個Android Things應用程式 by Michael | CodeData
top

Android Things Tutorial(六)第一個Android Things應用程式

分享:

Android Things Tutorial(五)使用Android ADB工具管理Android Things << 前情

在開始執行接下來的內容之前,必須先確定下列的項目:

建立Android Things App專案

Android Things App的開發、執行與測試,同樣在Android Studio中執行,依照下列的步驟建立Android Things App專案(全部的操作可以參考最後面的示範影片):

  1. 啟動Android Studio。
  2. 選擇「Start a new Android Studio project」。
  3. 在New Project視窗輸入下列需要的資訊,完成後選擇「Next」:
    • Application name: 應用程式名稱,例如「Hello Android Things」。
    • Company domain: 公司或個人的網域名稱,例如「hello.com」。
    • Project location: 專案儲存的位置。
  4. 在Target Android Devices視窗,勾選「Phone and Tablet」,Minimum SDK選擇「API 24: Android 7.0(Nougat)」,最後選擇「Next」。
  5. 在Add an Activity to Mobile視窗,選擇「Empty Activity」後選擇「Next」。
  6. 在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的基本概念,準備開始設計嵌入式與物聯網的應用程式。

https://github.com/macdidi5/Android-Things-Tutorial

後續 >> Android Things Tutorial(七)認識Raspberry Pi的GPIO與基本零件

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章