Your SlideShare is downloading. ×
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
ハンズオン資料 電話を作ろう(v2.x用)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ハンズオン資料 電話を作ろう(v2.x用)

1,842

Published on

第6回Android勉強会in札幌 ハンズオン資料 電話を作ろう(v2.x用)

第6回Android勉強会in札幌 ハンズオン資料 電話を作ろう(v2.x用)

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,842
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. 6 Android in Android 2.x 2010/10/16 sak+
  2. 2010/10/16 Android in 2010/10/16 sak sak+ Android Market R digg B Lite W Free/Pro/Quad W Free/ Pro/Quad CF Free 2010/09/26 Twitter @_sak E-mail sakashita sakplus.jp Blog http://sakplus.jp/blog/ 6 Android in Android 2.x 1
  3. 2010/10/16 Step 1. Android Eclipse File > New > Android Project New Android Project Finish Project name SampleDialer Build Target 2.1-update1 Application name SampleDialer Package name com.example.sampledialer Create Activity SampleDialer Min SDK Version Eclipse Run > Run As > Android Application Hello World, SampleDialer! 6 Android in Android 2.x 2
  4. 2010/10/16 src/com/example/sampledialer/SampleDialer.java res/drawable-[hlm]dpi/icon.png res/layout/main.xml res/values/string.xml AndroidManifest.xml res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> src/com/example/sampledialer/SampleDialer.java public class SampleDialer extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } Step 1 6 Android in Android 2.x 3
  5. 2010/10/16 Step 2. URI SimpleCursorAdapter src/com/example/sampledialer/SampleDialer.java public class Sapporo01 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String filter = ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'"; Cursor c = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, filter, null, null); SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_2, c, new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, }, new int[] { android.R.id.text1, android.R.id.text2, } ); ListView lv = (ListView)findViewById(R.id.ListView01); lv.setAdapter(adapter); } } 6 Android in Android 2.x 4
  6. 2010/10/16 ListView res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sampledialer" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Sapporo01" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_CONTACTS" /> </manifest> 6 Android in Android 2.x 5
  7. 2010/10/16 Step 3. SimpleCursorAdapter SimpleCursorAdapter SampleDialer SampleDialer.java ic_contact_picture.png res/layout/drawable-mdpi 6 Android in Android 2.x 6
  8. 2010/10/16 src/com/example/sampledialer/SampleDialer.java private class MyAdapter extends SimpleCursorAdapter{ public MyAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); setViewBinder(new MyViewBinder()); } } private class MyViewBinder implements SimpleCursorAdapter.ViewBinder { @Override public boolean setViewValue(View view, Cursor cursor, int columnIndex) { if (columnIndex == cursor.getColumnIndex( ContactsContract.CommonDataKinds.Phone.PHOTO_ID)) { String person_id = cursor.getString(columnIndex); if (person_id == null) { ((ImageView)view).setImageResource(R.drawable.ic_contact_picture); return true; } Uri uri = ContentUris.withAppendedId( ContactsContract.Data.CONTENT_URI, Integer.parseInt(person_id)); String[] projection = { ContactsContract.CommonDataKinds.Photo.PHOTO }; Cursor c = getContentResolver().query(uri, projection, null, null, null); byte[] photoData = null; if (c.moveToFirst()) { photoData = c.getBlob(0); } c.close(); if (photoData != null) { ((ImageView)view).setImageBitmap( BitmapFactory.decodeByteArray(photoData, 0, photoData.length)); } return true; } else if (columnIndex == cursor.getColumnIndex( ContactsContract.CommonDataKinds.Phone.TYPE)) { String type; int ntype = Integer.parseInt(cursor.getString(columnIndex)); if (ntype == 1) { type = " "; } else if (ntype == 2) { type = " "; } else if (ntype == 3) { type = " "; } else { type = " "; } ((TextView)view).setText(type); return true; } return false; } } 6 Android in Android 2.x 7
  9. 2010/10/16 simple_list_item_2 ImageView TextView item.xml res/layout/item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/photo" android:layout_width="48dp" android:layout_height="48dp" android:src="@drawable/ic_contact_picture"/> <TextView android:text="Name" android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:text="Number" android:id="@+id/number" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:text="Type" android:id="@+id/type" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 6 Android in Android 2.x 8
  10. 2010/10/16 src/com/example/sampledialer/SampleDialer.java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String filter = ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'"; Cursor c = managedQuery(Contacts.Phones.CONTENT_URI, null, filter, null, null); MyAdapter adapter = new MyAdapter( this, R.layout.item, c, new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_ID, ContactsContract.CommonDataKinds.Phone.TYPE, }, new int[] { R.id.name, R.id.number, R.id.photo, R.id.type, } ); ListView lv = (ListView)findViewById(R.id.ListView01); lv.setAdapter(adapter); } 6 Android in Android 2.x 9
  11. 2010/10/16 Step 4. RelativeLayout RelativeLayout 6 Android in Android 2.x 10
  12. 2010/10/16 res/layout/item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="2dp" > <ImageView android:id="@+id/photo" android:layout_width="56dp" android:layout_height="56dp" android:src="@drawable/ic_contact_picture"/> <TextView android:text="Name" android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/photo" android:layout_marginTop="5dp" android:layout_marginLeft="10dp" android:maxWidth="190dp" android:singleLine="true" android:textSize="18dp" /> <TextView android:text="Number" android:id="@+id/number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/photo" android:layout_below="@id/name" android:layout_marginTop="5dp" android:layout_marginLeft="15dp" android:textSize="14dp" /> <TextView android:text="Type" android:id="@+id/type" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/name" android:layout_marginTop="5dp" android:layout_marginRight="15dp" android:textSize="14dp" android:gravity="right" /> </RelativeLayout> 6 Android in Android 2.x 11
  13. 2010/10/16 Step 5. ACTION_DIAL tel URI tel:09012345678 6 Android in Android 2.x 12
  14. 2010/10/16 src/com/example/sampledialer/SampleDialer.java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyListView lv = (MyListView)findViewById(R.id.ListView01); lv.setDynamics(new SimpleDynamics(0.9f, 0.6f)); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick( AdapterView<?> parent, View v, int position, long id) { call(id); } }); } private void call(long id) { Uri uri = ContentUris.withAppendedId( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, id); Cursor c = getContentResolver().query(uri, null, null, null, null); c.moveToFirst(); String number = (String)c.getString(c.getColumnIndex( ContactsContract. CommonDataKinds.Phone.NUMBER)); c.close(); Intent i = new Intent(Intent.ACTION_DIAL); i.setData(Uri.parse("tel:" + number)); startActivity(i); } 6 Android in Android 2.x 13
  15. 2010/10/16 ACTION_DIAL ACTION_CALL AndroidManifest.xml <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PRIVILEGED" /> 6 Android in Android 2.x 14
  16. 2010/10/16 Step 1. URL http://blogs.sonyericsson.com/developerworld/2010/06/23/android-tutorial-making-your-own-3d-list- part-3/ [Download] 3D List sample project – Part 3 (37kb) ListTutrialPart3.zip src/com/sonyericsson/tutrial/list3/MyListView.java src/com/sonyericsson/tutrial/list3/TestActivity.java SimpleDynamics src/com/sonyericsson/util/Dynamics.java res/drawable-ldpi/background.9.png src src TestActivity.java SimpleDynamics SimpleDialer TestActivity.java res/drawable-ldpi/backgrund.9.png res/drawable-mdpi 6 Android in Android 2.x 15
  17. 2010/10/16 Step 2. res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.sonyericsson.tutorial.list3.MyListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> res/layout/item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="2dp" android:background="@drawable/background" > 6 Android in Android 2.x 16
  18. 2010/10/16 Step 3. ListView src/com/example/sampledialer/SampleDialer.java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyListView lv = (MyListView)findViewById(R.id.ListView01); lv.setDynamics(new SimpleDynamics(0.9f, 0.6f)); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick( AdapterView<?> parent, View v, int position, long id) { call(id); } }); } 6 Android in Android 2.x 17
  19. 2010/10/16 Android CF 6 Android in Android 2.x 18

×