AOZORAYOMITE and Intent

1,588 views

Published on

青空読手の諸々の紹介とインテントっていいね!ってお話。
11/09/30(金)第20回日本Androidの会東北支部発信会@仙台AER8Fにて発表した際のスライドです。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,588
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

AOZORAYOMITE and Intent

  1. 1. 青空読手とインテント 2011/09/30(金)@東北支部発信会 樋口 祐紀 (@hyukix / hyukix@gmail.com)
  2. 2. 自己紹介
  3. 3. 自己紹介名前: 樋口 祐紀 (ひぐち ゆうき)年齢: 31歳 (1980/02/08)出身: 三重県四日市市所属: (株)PRO&BSC趣味: 10年前までは... 3
  4. 4. Androidとの関わりは... 4
  5. 5. 青空読手って!?
  6. 6. 青空読手のご紹介①作者一覧やランキングから選択 文庫の表示 もちろんしおり機能も 6
  7. 7. 青空読手のご紹介② サイズ: 極大 + 太さ: 極太 サイズ: 極小 + 太さ: 極細文字のサイズと太さの指定 7
  8. 8. 青空読手のご紹介③ SDカードや本体内の テキストの読み込みも可能 横向き表示にも対応 8
  9. 9. mobile ASCII vol.5に掲載! 2011/7/29発行 9
  10. 10. PLUTINUM Prize 頂きました! 10
  11. 11. ディベロッパーコンソール 端末 国1 Samsung Galaxy S 12.5% (14,561) 1 日本 98.3% (114,643)2 Sharp IS03 10.7% (12,507) 2 アメリカ合衆国 0.4% (481)3 Fujitsu Toshiba REGZA Phone T01C 8.8% (10,219) 3 中国 0.3% (321)4 SEMC Xperia X10 6.8% (7,946) 4 大韓民国 0.2% (224)5 Samsung Galaxy Tab 6.5% (7,544) 5 台湾 0.2% (214)6 SO-02C 6.4% (7,485) 6 香港 0.1% (98)7 SEMC Xperia Arc 6.3% (7,313) 7 タイ 0.1% (84)8 Samsung Galaxy S2 4.3% (4,959) 8 イギリス 0.1% (71)9 Sharp IS01 3.1% (3,599) 9 オーストラリア 0.0% (52)10 Sharp Lynx 3D SH-03C 3.0% (3,455) 10 シンガポール 11 0.0% (51)
  12. 12. どうやって作ってるの?
  13. 13. どうやって作ってるの!?① • データは青空文庫サイト *1 から zipファイルをDL後、解凍 – 500文庫分のzipファイルへのリン クを保持 • フォントは「IPA明朝」をダウン ロードして利用 • SurfaceViewで頑張って描画 – (背景+本文+ルビ+タイトル +ページ数)x 2*1 … http://www.aozora.gr.jp/ 13
  14. 14. どうやって作ってるの!?②• Twitterによるつぶやき 14
  15. 15. どうやって作ってるの!?③ • Twitterへのつぶやき投稿はこんなにかんたん!final String msg = " 『坊っちゃん』なう #aozorayomite";final Uri uri = Uri.parse( http://twitter.com/home/?status= + URLEncoder.encode(msg, "UTF-8"));final Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent); 15
  16. 16. どうやって作ってるの!?④ def get_or_post(self): pdev = self.request.get(dev).encode(utf-8) pos = self.request.get(os).encode(utf-8) pver = self.request.get(ver).encode(utf-8) ptitle = self.request.get(title).encode(utf-8) pbug = self.request.get(bug).encode(utf-8) report = "dev: " + pdev + "¥n" report += "os: " + pos + "¥n" report += "ver: " + pver + "¥n" report += "title: " + ptitle + "¥n" report += "bug: " + pbug mail.send_mail( sender=hyukix@gmail.com, to=hyukix@gmail.com, subject=Bug Report - AozoraYomite, body=report)【参考サイト】throw Life - Androidアプリのバグ報告システムを考えるhttp://www.adamrocker.com/blog/288/bug-report-system-for-android.html 16
  17. 17. どうやって作ってるの!?⑤• 青空プロバイダとの連携機能 17
  18. 18. 突然ですがクイズです• Twitter / Evernote / メールを利用し、 任意の文字列を送信するAndroidアプ リを作るのに必要な時間は? A. 3分 B. 3時間 C. 3日 D. Androidでは無理... だけど... 3秒でできるよ。そう、iPhoneならね 18
  19. 19. これだけ書けば解決!public class Test extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new AlertDialog.Builder(this).setMessage("Start activity ?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "Hello, Android!!"); startActivity(intent); } }).setNegativeButton("No", null).show(); }} 19
  20. 20. This is Android!! Evernote IMoNi twicca 20
  21. 21. インテントって!?
  22. 22. インテントって何? • 処理依頼メッセージのこと – 例: AK Notepadによる他アプリ機能 AK Notepadにてテキ ACTION_SEND イ ン Twidroidにペーストさ ストを入力。メニューから テ ン トが発行 さ れ 、 対 れる。ポイントは相互連 Shareを指定すると… 応アプリがリストアップ 携を前提としてない点出典:使って分かったAndroidとiPhoneの違い http://goo.gl/5nGc 22
  23. 23. Extra DataIntentとExtraData – – EXTRA_ALARM_COUNT EXTRA_BCCActivity Actions Broadcast Actions – EXTRA_CC– ACTION_MAIN – ACTION_TIME_TICK – EXTRA_CHANGED_COMPONENT_NAME– ACTION_VIEW – ACTION_TIME_CHANGED – EXTRA_DATA_REMOVED– ACTION_ATTACH_DATA – ACTION_TIMEZONE_CHANGED – EXTRA_DOCK_STATE– ACTION_EDIT – ACTION_BOOT_COMPLETED – EXTRA_DOCK_STATE_CAR– ACTION_PICK – ACTION_PACKAGE_ADDED – EXTRA_DOCK_STATE_DESK– ACTION_CHOOSER – ACTION_PACKAGE_CHANGED – EXTRA_DOCK_STATE_UNDOCKED– ACTION_GET_CONTENT – ACTION_PACKAGE_REMOVED – EXTRA_DONT_KILL_APP– ACTION_DIAL – ACTION_PACKAGE_RESTARTED – EXTRA_EMAIL– ACTION_CALL – ACTION_PACKAGE_DATA_CLEA – EXTRA_INITIAL_INTENTS– ACTION_SEND RED – EXTRA_INTENT– ACTION_SENDTO – ACTION_UID_REMOVED – EXTRA_KEY_EVENT– ACTION_ANSWER – ACTION_BATTERY_CHANGED – EXTRA_PHONE_NUMBER– ACTION_INSERT – ACTION_POWER_CONNECTED – EXTRA_REMOTE_INTENT_TOKEN– ACTION_DELETE – ACTION_POWER_DISCONNECT – EXTRA_REPLACING ACTION_RUN ED– – EXTRA_SHORTCUT_ICON ACTION_SYNC – ACTION_SHUTDOWN– – EXTRA_SHORTCUT_ICON_RESOURCE– ACTION_PICK_ACTIVITY – EXTRA_SHORTCUT_INTENT– ACTION_SEARCH – EXTRA_STREAM– ACTION_WEB_SEARCH – EXTRA_SHORTCUT_NAME– ACTION_FACTORY_TEST – EXTRA_SUBJECT // インテントによるブラウザ起動の例 – EXTRA_TEMPLATE Uri uri = Uri.parse("http://probsc.jp"); – EXTRA_TEXT Intent intent = new Intent(Intent.ACTION_VIEW, uri); – EXTRA_TITLE startActivity(intent); – EXTRA_UID 23
  24. 24. インテントは空も飛ぶんです!Chrome to Phone おもむろにクリック! Androidでブラウズ 24
  25. 25. 空飛ぶインテントの正体は...• Cloud to Device Messaging (C2DM) – サーバからAndroidアプリケーションへの軽量 メッセージの送信を助けるサービス – メッセージはキューイングされるが順序保証なし – ア プ リ は 常 時 起 動 の 必 要 は な く 、 Intent Broadcastをトリガーに起動される – 処理方法はアプリに依存 – Android2.2 (Froyo) が必要 – Googleアカウントの設定と接続が必要 25
  26. 26. C2DMのアーキテクチャ Google C2DM Servers 1. (Register) Sender ID / Application4. (POST 2. Registration ID https://android.apis.google.com/c2dm/send) (定期的に更新) Registration ID / data.<key> 5. Message App 3. Registration ID Application ID (定期的に更新)Third-Party Sender IDApplication Server 6. Intent Mobile Device 26
  27. 27. 青空読手でのインテント活用• 青空文庫サイトから書籍データをダウンロードするための アプリ。リーダー機能は備えていない ו 青空文庫リーダーアプリ。書籍データへのリンクは予め収 録したランキング。任意データ取得は不可 27
  28. 28. 暗黙的インテントを受け取るためのManifest宣言<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.gmail.hyukix.aozorayomite" android:versionName="0.9.8.2" android:versionCode=“10”> ・・・ <application android:icon=“@drawable/icon” android:label=“@string/app_name”> <activity android:name=".AozoraYomite" android:label="@string/app_name" android:screenOrientation=“portrait”> <intent-filter><action android:name=“android.intent.action.MAIN” /> <category android:name=“android.intent.category.LAUNCHER” /></intent-filter> </activity> <activity android:name=".Reader" android:label="@string/app_name" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <!-- file://xxxxのようなリクエストを受け付ける --> <data android:scheme="file" android:mimeType="text/plain" /> </intent-filter> </activity> ・・・ </application> ・・・</manifest> 28
  29. 29. Activityでのインテント判定と処理振り分けpackage com.gmail.hyukix.aozorayomite; ・・・public class Reader extends Activity { ・・・ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ・・・ if (Intent.ACTION_VIEW.equals(getIntent().getAction())) { // 暗黙的インテント ・・・ } else { // 明示的インテント ・・・ } ・・・ } ・・・} 29
  30. 30. マネタイズ
  31. 31. この1年で…出典:http://www.apple.com/jp/macbookair/ 31
  32. 32. DL 数が伸びないことには... ① ② ③① アンドロイダー レビュー記事② アンドロイダー 青空文庫比較記事③ au one market 登録 32
  33. 33. 昨年度末の盛り上がり! 33
  34. 34. 今後ともどうぞよろしくお願いします• ハンドアウト – http://bit.ly/nodakK (3.3MB)• 青空読手 ver0.9.8.16 (野良アプリ版) – http://bit.ly/nvkHfM (267KB)• 青空読手 ver0.9.8.16 (AndroidMarket) 34

×