Android開発の基礎_20101218
Upcoming SlideShare
Loading in...5
×
 

Android開発の基礎_20101218

on

  • 4,585 views

2010/12/18 スパイシーソフトさんで開かれた勉強会「スパイシーカレッジ」での資料です。

2010/12/18 スパイシーソフトさんで開かれた勉強会「スパイシーカレッジ」での資料です。

Statistics

Views

Total Views
4,585
Views on SlideShare
4,575
Embed Views
10

Actions

Likes
7
Downloads
53
Comments
0

3 Embeds 10

http://www.linkedin.com 6
https://www.linkedin.com 2
http://www.google.co.jp 2

Accessibility

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • 端末には本当に予測もつかない自体がよく起こるので、\n忘れがちなので一覧をチェックしておくことがお勧め\n
  • 日本語訳すると意図・意志\n\n\n
  • \n
  • 次から各コンポーネントの詳細\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ここまでがライフサイクルの説明\n次は別Activityの起動について\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 音楽サービスでは、たとえばPHONE_STATEやMEDIA_REMOVEなどを使う。\nこれを受けないとどういうことが起こるかというと、電話がかかってきてもバックグラウンドのサービスによる音楽再生は続けられてしまう。電話がかかってきたらBroadcastReceiverで検知して、Serviceに対して停止命令を出す、という処理が必要。(同様に電話が終わったら、再開命令を出す)\n
  • onReceiveの間しか生存期間がないので、さっき説明したServiceにbindするような非同期処理は行うことができない。Serviceとは、お互いIntentでやり取りするなど工夫する必要がある。\n
  • \n
  • \n
  • 1個目は電話がかかってきたBroadcastを受ける\n2個目は音楽ファイルデータに対してのIntentを受けられることを示す。これを書いておくと、たとえばGmailでの添付ファイルで音楽ファイルが選択された際とかにアプリケーション候補一覧に表示される。\n3個目はブラウザで特定のスキーマ名、ホスト名、パスのリンクを押されたときに、候補一覧に表示させるためのフィルタ。httpでなくても独自スキーマも定義できる。\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • OSのバージョンで処理を切り分けることができるので2.1や2.2の新機能はフルに使った方がよい。Flash,マルチタッチ,C2DM,ライブ壁紙,HTML5など。またAPIによっては大幅な変更がある場合もあるので注意。たとえば連絡先など。\n
  • UXの向上にチューニングは絶対必要な作業\n200ms応答がなければそれはもうジャンクなアプリ\n\n
  • \n\n
  • 実際にアプリケーションを開発してみて、基本的な構成要素の理解が非常に重要かと思った。\nandroid developersにも開発の基礎というページがあって、それを読むと今日説明した内容がさらに深く分かると思う。\nアプリ間やコンポーネント間の柔軟な連携は、Androidならではの仕組みでとても面白い。\n今日説明して内容は膨大にあって、たとえばUI・チューニング・テストは重要。\n

Android開発の基礎_20101218 Android開発の基礎_20101218 Presentation Transcript

  • Android @thorikawa
  • Soft ware Engineer, MTI Ltd. android apps “music.jp”Blog: http://d.hatena.ne.jp/thorikawa/FiremobileSimulator http://firemobilesimulator.org/ (iPhone/iPad app)t witter: @thorikawa
  • Android Activity Service BroadcastReceiver Intent ContentProvider
  • Activity Activity
  • Service
  • BroadcastReceiver SD
  • Intent Activity,Ser vice,BroadcastReceiver URI
  • ContentProvider
  • actionUser Activity Content Provider Service Intent BroadcastReceiverEvent
  • Activity
  • onCreate() xml Intent
  • onStart()
  • onResume() Activity
  • onPause() Activity
  • onStop()
  • onDestroy() MediaPlayer.release() WebView.destroy()
  • ActivityIntentActivity.startActivity()Activity.startActivityForResult()
  • 1 = 1 Activity
  • Service
  • 2Context.startSer vice() Ser viceIntentContext.bindSer vice() Ser vice RPC
  • startService() vs bindSer vice() + RPC startSer vice() Intent bindService() bind RPC
  • startService() Ser vice.onStart() Intent
  • bindService() bind bind Ser vice
  • Broadcast Receiver
  • Intent actiononReceive() (Intent) onReceive()
  • android.intent.action.PHONE_STATEandroid.intent.action.BOOT_COMPLETEDandroid.intent.action.TIMEZONE_CHANGEDandroid.intent.action.MEDIA_REMOVED
  • App Widget BroadcastReceiveronReceive() onReceive()
  • Intent
  • Intent Intent Intent Activity Intent Activity
  • AndroidManifeset.xml Intent Filter Intent<intent-filter> <action android:name="android.intent.action.PHONE_STATE" /></intent-filter><intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="audio/*" /></intent-filter><intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:host="example.com" /></intent-filter>
  • Content Provider
  • Content Uri(content:/ / / URL)
  • query update SQLite insert delete etc... Client File Content Provider ex)ActivityInternet
  • content://media/ MediaProvider content://media/external/images/ media content://media/external/images/ media/1
  • ContentProvider ContentResolver
  • Uri imagesUri = Images.Media.getContentUri("external"); Cursor cursor = getContentResolver().query( imagesUri, // Content Uri new String[] { ImageColumns.TITLE }, // null, // null, // null // ); while(cursor.moveToNext()) { ... } corsor.close();
  • ContentProviderContentProvider
  • public class MyContentProvider extends ContentProvider { @Override public boolean onCreate() { // ... } @Override public Uri insert(Uri uri, ContentValues values) { ... } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { ... } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { ... } @Override public String getType(Uri uri) { // Content Uri ... } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { ... } @Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { // ... }}
  • AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="a.b.c" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="x"> <provider android:name=".MyContentProvider"android:authorities="hoge" /> </application> <uses-sdk android:minSdkVersion="4" /></manifest> content://hoge/ MyContentProvider
  • My App Mail App action: Intent.ACTION_SEND extra: EXTRA_STREAM=content:/ /hoge/1 IntentActivity Activity query openFile Content Provider authorities="hoge"
  • ActivityActivity
  • Android Activity, Service, BroadcastReceiver, Intent, ContentProviderIntent ContentProvider