android OS 端末用アプリケーションの開発について
使用環境:
D:ドライブにインストールされた android SDK と eclipse を使用。
ADT (android development tools) プラグインを通して、java でアプリケーションを開発する。
d:ドライブのadt-bundle-windows-x86_64-20131030 フォルダを参照。
android device エミュレータ:
参照: http://qiita.com/gabu/items/8bc1a11f1382409f1d2a
intel が提供するHAXM を利用し、 atom cpu device用 android image を x86 CPU でエミュレートする。
課題1:
各自で、eclipse の avd managerを使用して仮想デバイスを作成する(手順を演習中に示す)。
eclipse の workplace は、 D:ドライブに 学籍番号 のフォルダで作成し、課題作成後レポートフォルダに提出する。
端末名 advprog2
OS android4.3
CPU atom
メモリ 768MB
host 側 GPU 使用
課題2:
avd avdprog2を起動。
android OS の環境確認(アプリの起動、終了。ホームボタン、戻るボタン など)
課題3:
Helloworld プロジェクト。
File -> new から android application project を作成し、avdから起動。
課題4:
Myworld プロジェクト。
3と同様にプロジェクト作成。
res の layout 内の activity_main.xml ファイルをダブルクリックして、
Graphical Layout を起動。
GUI部品を配置して動作確認。
課題5:
コードによる activity の作成。
Sample2013_12 プロジェクト。
参照サイト:
http://techbooster.org/android/ui/9039/
http://techbooster.org/android/ui/12424/
http://techbooster.org/android/ui/5812/
下のコードは、3番目の記事に対応。
MainActivity.java の内容。
package com.example.sample2013_12;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.ExpandableListActivity;import android.content.Intent;import android.view.View;import android.widget.ExpandableListView;import android.widget.SimpleExpandableListAdapter;public class MainActivity extends ExpandableListActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
List<Map<String, String>> groupList = new ArrayList<Map<String,String>>();
List<List<Map<String, String>>> childList = new ArrayList<List<Map<String,String>>>(); for (int i = 0; i < 3; i++) { // Group(親)のリスト Map<String, String> groupElement = new HashMap<String, String>(); groupElement.put("GROUP_TITLE", "Group " + i); groupList.add(groupElement); // Childのリスト List<Map<String, String>> childElements = new ArrayList<Map<String, String>>(); for (int j = 0; j < 5; j++) { Map<String, String> child = new HashMap<String, String>(); child.put("CHILD_TITLE", "Child " + j); child.put("SUMMARY", "Summary " + j); childElements.add(child); } childList.add(childElements); } SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter( this, // Group(親)のリスト groupList, // Group(親)のレイアウト android.R.layout.simple_expandable_list_item_1, // Group(親)のリストで表示するMapのキー new String []{"GROUP_TITLE"}, // Group(親)のレイアウト内での文字を表示するTextViewのID new int []{android.R.id.text1}, // Child(子)のリスト childList, // Child(子)のレイアウト android.R.layout.simple_expandable_list_item_2, // Child(子)のリストで表示するMapのキー new String []{"CHILD_TITLE", "SUMMARY"}, // Child(子)のレイアウト内での文字を表示するTextViewのID new int []{android.R.id.text1, android.R.id.text2} ); setListAdapter(adapter);}
// 以下のメソッドは、課題6用のもの。課題5には不要。 @Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Intent intent=new Intent(); intent.setClassName("com.example.sample2013_12","com.example.sample2013_12.Memo"); String msg = String.format("%d : %d",groupPosition,childPosition); intent.putExtra("com.example.sample2013_12.intent.testString", msg); startActivity(intent); return super.onChildClick(parent, v, groupPosition, childPosition, id);
}
}
課題6:
intent による、activity間の遷移。
Sample2013_12 プロジェクトを修正して、Memo Activity を作成。リストメニューから表示する様にコードを修正。
参照サイト:
http://techbooster.org/android/application/8346/
http://www.javadrive.jp/android/intent/
AndroidManifest.xml の内容。
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sample2013_12" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.sample2013_12.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Memo" android:label="@string/app_name" > </activity> </application></manifest>Memo.java の内容。
package com.example.sample2013_12;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.EditText;public class Memo extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); String str = null; if(intent != null){ str = intent.getStringExtra("com.example.sample2013_12.intent.testString");}
EditText textview = new EditText(this); textview.setText(str); setContentView(textview); }}課題7:
android の GUIコンポーネントについて調べ、activityに配置し動作を確認する。
例)
課題6の Memo.java で利用している GUIコンポーネント EditText を別のテキストコンポーネントに変更し、利用するなど。