Your SlideShare is downloading. ×
Android開発の基礎_20101218
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

Android開発の基礎_20101218

4,124
views

Published on

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

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


0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,124
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
54
Comments
0
Likes
8
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
  • \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
  • Transcript

    • 1. Android @thorikawa
    • 2. 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
    • 3. Android Activity Service BroadcastReceiver Intent ContentProvider
    • 4. Activity Activity
    • 5. Service
    • 6. BroadcastReceiver SD
    • 7. Intent Activity,Ser vice,BroadcastReceiver URI
    • 8. ContentProvider
    • 9. actionUser Activity Content Provider Service Intent BroadcastReceiverEvent
    • 10. Activity
    • 11. onCreate() xml Intent
    • 12. onStart()
    • 13. onResume() Activity
    • 14. onPause() Activity
    • 15. onStop()
    • 16. onDestroy() MediaPlayer.release() WebView.destroy()
    • 17. ActivityIntentActivity.startActivity()Activity.startActivityForResult()
    • 18. 1 = 1 Activity
    • 19. Service
    • 20. 2Context.startSer vice() Ser viceIntentContext.bindSer vice() Ser vice RPC
    • 21. startService() vs bindSer vice() + RPC startSer vice() Intent bindService() bind RPC
    • 22. startService() Ser vice.onStart() Intent
    • 23. bindService() bind bind Ser vice
    • 24. Broadcast Receiver
    • 25. Intent actiononReceive() (Intent) onReceive()
    • 26. android.intent.action.PHONE_STATEandroid.intent.action.BOOT_COMPLETEDandroid.intent.action.TIMEZONE_CHANGEDandroid.intent.action.MEDIA_REMOVED
    • 27. App Widget BroadcastReceiveronReceive() onReceive()
    • 28. Intent
    • 29. Intent Intent Intent Activity Intent Activity
    • 30. 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>
    • 31. Content Provider
    • 32. Content Uri(content:/ / / URL)
    • 33. query update SQLite insert delete etc... Client File Content Provider ex)ActivityInternet
    • 34. content://media/ MediaProvider content://media/external/images/ media content://media/external/images/ media/1
    • 35. ContentProvider ContentResolver
    • 36. 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();
    • 37. ContentProviderContentProvider
    • 38. 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 { // ... }}
    • 39. 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
    • 40. My App Mail App action: Intent.ACTION_SEND extra: EXTRA_STREAM=content:/ /hoge/1 IntentActivity Activity query openFile Content Provider authorities="hoge"
    • 41. ActivityActivity
    • 42. Android Activity, Service, BroadcastReceiver, Intent, ContentProviderIntent ContentProvider