0
New in Andriod 4.4
〜Printing API, App Indexing, SMS Service, ADiA〜
木村尭海(@muchiki0226)
2013/11/4
目次
Printing API
App Indexing
SMS Service
Android Design in Action
Printing API
Printing API
プリント機能でサポートするもの
Print Manager
アプリとサービス間を仲介する

Apps
プリンターに対してプリントを要求する

Service
プリント要求を操作する
Priter Framework
アプリ開発者ができること
様々なコンテンツをワイヤレスでプリントアウトするこ
とができる

プリンタOEMベンダー
プリンターサービスを作りAPKとしてPlayStoreで公開す
ることができる

ユーザー
プ...
Printing API
3種類の方法がある
Print bitmaps(easy)
Print HTML from web view(easy)
Print PDF Canvas(complex)
Print bitmaps
2種類の印刷タイプを選べことが可能
SCALE TO FIT
SCALE TO FILL
Print bitmaps
SupportLibrary.v4のPrintHelperを用いて実装する
void doBitmapPrint(){
PrintHelper bitmapPrinter = new PrintHelper(getA...
PrintHelper APIs
void printBitmap(String jobName, Bitmap bitmap)
void printBitmap(String jobName, Uri imageFile)

void set...
Print HTML
void doWebViewPrint(){
WebView webView = new WebView(getActivity());
String htmlDocument = “<html><body>test</b...
Print HTML
注意点
ヘッダーとフッターは付けれない
ページの範囲を設定できない
WebViewのインスタンス一つにつき1つの印刷
ジョブしか追加できない
Print PDF Canvas
処理の流れ
PdfDocmuentからキャンバスを取得する
コンテンツをキャンバスに書き込む
PdfDocmuentを印刷する

詳細はAndroidDevlopersを確認してね!
Apps Indexing
Apps Indexing
ブラウザでの検索結果にアプリの開くボタンを
追加するディープリンク機能
アプリとWebサイトに情報を付与、サイトに登録
すると利用可能
https://developers.google.com/app-indexi...
HTMLの変更
android-appを追加する
フォr−マット
android-app://{package_id}/{scheme}/{host_path}
<html>
<head>
...
<link rel="alternate" h...
XMLの変更
HTML同様に「android-app://〜」を埋め込む

<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schem...
Appsの変更
プレフィックスとホストを用いてインテント
フィルタを用いて起動する
起動するかをadbでテストできる
adb shell am start -W -a android.intent.action.VIEW
-d "example...
SMS APIs
SMS APIs
SMS ContentProvider
システム設定で設定したデフォルトアプリのみ
直接のやりとりができる

その他のアプリ
読みこむことができる
パーミッション必須

書き込みはサイレントなエラーになる
なぜデフォルトアプリのみ
なのか
信頼性の強化
デフォルトアプリのみメッセージのやり取りを行
うため、不必要な別のアプリの送信をなくし、
ユーザーの知らないところでの送信を防ぐ

複雑さを減らす
別のアプリからのメッセージの削除やメッセージ
の...
SMSレシーバー
SMSContentProviderからSMSメッセージが
ブロードキャストで送られて来るときに
設定すべきレシーバー
パーミッション
android.permission.BROADCAST_SMS

フィルター
Actio...
MMSレシーバー
SMSContentProviderからSMSメッセージが
ブロードキャストで送られて来るときに
設定すべきレシーバー
パーミッション
android.permission.BROADCAST_WAP_PUSH

フィルター
...
Activity
他のアプリからインテントでSMS/MMSメッセー
ジを受けとる
デフォルトアプリになっている場合は別のアプリ
からメッセージを送信するように要望されている
フィルター
Action:「android.intent.SENDTO...
Service
他のアプリにメッセージが届いたことを即座に
知らせるためのサービス
パーミッション
android.permission.SEND_RESPOND_VIA_MESS
AGE

フィルター
Action:
「android.int...
デフォルトアプリ変更時
デフォルトアプリ名の取得方法
String defaultSmsApp =
Telephony.Sms.getDefaultSmsPackage(context);

デフォルトアプリを変更する

Intent inte...
Android Design in Action
Android Design in Action
新しいUIとデザインガイドラインについて
ブランド
タッチフィードバック
フルスクリーン
ジェスチャ
ブランド
ブランドカラー
ブルーから変更可能
チェックボックス
プログレスバー
タブ
スクロール
ボタン
スライダー

ロゴ
アプリアイコン領域にアプリアイコン
以外の画像を配置可能
タッチフィードバック
KitKat以前
フィードバックカラーは青

KitKat
フィードバックカラーは背景色を明るく/暗くし
た色に変更
ブランドカラーに適応するため
フルスクリーン
フルスクリーン時の操作の追加
Immersive(没入)
上下スワイプから操作パネルを表示する概念を追加
ジェスチャ
概念
タッチ
ロングプレス
スワイプorドラッグ
ロングプレスドラッグ
ダブルタッチ
ダブルタッチドラッグ(新規)
ダブルタッチ後にドラッグを行う
上下、斜めが可能

GoogleMapにてすでに採用されている
参考
Android Developers
http://developer.android.com/index.html

Google Developers
https://developers.google.com/

ブリリアントサービ...
Upcoming SlideShare
Loading in...5
×

New in Android4.4

1,613

Published on

Android4.4で更新された新機能を4種類についてまとめました。
Printing API、App Indexing、SMS Service、Android Design in Actionについてです。

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

  • Be the first to like this

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

No notes for slide

Transcript of "New in Android4.4"

  1. 1. New in Andriod 4.4 〜Printing API, App Indexing, SMS Service, ADiA〜 木村尭海(@muchiki0226) 2013/11/4
  2. 2. 目次 Printing API App Indexing SMS Service Android Design in Action
  3. 3. Printing API
  4. 4. Printing API プリント機能でサポートするもの Print Manager アプリとサービス間を仲介する Apps プリンターに対してプリントを要求する Service プリント要求を操作する
  5. 5. Priter Framework アプリ開発者ができること 様々なコンテンツをワイヤレスでプリントアウトするこ とができる プリンタOEMベンダー プリンターサービスを作りAPKとしてPlayStoreで公開す ることができる ユーザー プリンターサービスを取得しアプリでコンテンツを印刷 することができる
  6. 6. Printing API 3種類の方法がある Print bitmaps(easy) Print HTML from web view(easy) Print PDF Canvas(complex)
  7. 7. Print bitmaps 2種類の印刷タイプを選べことが可能 SCALE TO FIT SCALE TO FILL
  8. 8. Print bitmaps SupportLibrary.v4のPrintHelperを用いて実装する void doBitmapPrint(){ PrintHelper bitmapPrinter = new PrintHelper(getActivity()); bitmapPrinter.setScalemode( PrinterHelper.SCALE_MODE_ FIT); Bitmap bitmap = BitmapFactory.decodeResource( getResources(), R.drawable.droids); bitmapPrinter.printBitmap(“droids.jpg – test print”, bitmap); }
  9. 9. PrintHelper APIs void printBitmap(String jobName, Bitmap bitmap) void printBitmap(String jobName, Uri imageFile) void setColorMode(int colorMode) int COLOR_MODE_COLOR int COLOR_MODE_MONOCHROME void setScaleMode(int scaleMode) int SCALE_MODE_FILL int SCALE_MODE_FIT static boolean systemSupportsPrint()
  10. 10. Print HTML void doWebViewPrint(){ WebView webView = new WebView(getActivity()); String htmlDocument = “<html><body>test</body></html>”; webView.loadDataWithBaseURL( null, htmlDocument, “text/HTML”, “UTF-8”, null); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView wv, String url){ return false; } @Override public void onPageFinished(WebView wv, String url){ createWebPrintJob(wv); view = null; } }); }
  11. 11. Print HTML 注意点 ヘッダーとフッターは付けれない ページの範囲を設定できない WebViewのインスタンス一つにつき1つの印刷 ジョブしか追加できない
  12. 12. Print PDF Canvas 処理の流れ PdfDocmuentからキャンバスを取得する コンテンツをキャンバスに書き込む PdfDocmuentを印刷する 詳細はAndroidDevlopersを確認してね!
  13. 13. Apps Indexing
  14. 14. Apps Indexing ブラウザでの検索結果にアプリの開くボタンを 追加するディープリンク機能 アプリとWebサイトに情報を付与、サイトに登録 すると利用可能 https://developers.google.com/app-indexing/
  15. 15. HTMLの変更 android-appを追加する フォr−マット android-app://{package_id}/{scheme}/{host_path} <html> <head> ... <link rel="alternate" href="androidapp://com.example.android/example/gizmos" /> ... </head> <body> … </body>
  16. 16. XMLの変更 HTML同様に「android-app://〜」を埋め込む <?xml version="1.0" encoding="UTF-8" ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>http://www.example.com/gizmos</loc> <xhtml:link rel="alternate" href="androidapp://com.example.android/gizmos" /> </url> ... </urlset>
  17. 17. Appsの変更 プレフィックスとホストを用いてインテント フィルタを用いて起動する 起動するかをadbでテストできる adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android <activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_title_viewgizmos"> <action android:name="android.intent.action.VIEW" /> <!-- Accepts URIs that begin with "http://example.com/gizmos” --> <data android:scheme="http" android:host="example.com" android:pathPrefix="/gizmos" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
  18. 18. SMS APIs
  19. 19. SMS APIs SMS ContentProvider システム設定で設定したデフォルトアプリのみ 直接のやりとりができる その他のアプリ 読みこむことができる パーミッション必須 書き込みはサイレントなエラーになる
  20. 20. なぜデフォルトアプリのみ なのか 信頼性の強化 デフォルトアプリのみメッセージのやり取りを行 うため、不必要な別のアプリの送信をなくし、 ユーザーの知らないところでの送信を防ぐ 複雑さを減らす 別のアプリからのメッセージの削除やメッセージ の変更をしないようにできるため、他のアプリを 考慮した実装が不要
  21. 21. SMSレシーバー SMSContentProviderからSMSメッセージが ブロードキャストで送られて来るときに 設定すべきレシーバー パーミッション android.permission.BROADCAST_SMS フィルター Action: 「android.provider.Telephony.SMS_DELIVER」 <receiver android:name=".SmsReceiver" android:permission="android.permission.BROADCAST_SMS"> <intent-filter> <action android:name="android.provider.Telephony.SMS_DELIVER" /> </intent-filter>
  22. 22. MMSレシーバー SMSContentProviderからSMSメッセージが ブロードキャストで送られて来るときに 設定すべきレシーバー パーミッション android.permission.BROADCAST_WAP_PUSH フィルター Action: 「android.provider.Telephony.WAP_PUSH_DELIVE R」 Data:「application/vnd.wap.mms-message」 <receiver android:name=".MmsReceiver" android:permission="android.permission.BROADCAST_WAP_PUSH"> <intent-filter> <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" /> <data android:mimeType="application/vnd.wap.mms-message" /> </intent-filter> </receiver>
  23. 23. Activity 他のアプリからインテントでSMS/MMSメッセー ジを受けとる デフォルトアプリになっている場合は別のアプリ からメッセージを送信するように要望されている フィルター Action:「android.intent.SENDTO」 Data:「sms」,「smsto」,「mms」,「mmsto」 <activity android:name=".ComposeSmsActivity" > <intent-filter> <action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> <data android:scheme="mms" /> <data android:scheme="mmsto" /> </intent-filter> </activity>
  24. 24. Service 他のアプリにメッセージが届いたことを即座に 知らせるためのサービス パーミッション android.permission.SEND_RESPOND_VIA_MESS AGE フィルター Action: 「android.intent.action.RESPOND_VIA_MESSAGE」 <service android:name=".HeadlessSmsSendService" android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" Data:「sms」,「smsto」,「mms」,「mmsto」 android:exported="true" > <intent-filter> <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> <data android:scheme="mms" /> <data android:scheme="mmsto" /> </intent-filter> </service>
  25. 25. デフォルトアプリ変更時 デフォルトアプリ名の取得方法 String defaultSmsApp = Telephony.Sms.getDefaultSmsPackage(context); デフォルトアプリを変更する Intent intent = new Intent(context, Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName()); startActivity(intent); デフォルトアプリを変更した際は元のデフォルトア プリに戻す必要がある場合は content.getPackageName()をdefaultSmsAppにする と元に戻すことが可能
  26. 26. Android Design in Action
  27. 27. Android Design in Action 新しいUIとデザインガイドラインについて ブランド タッチフィードバック フルスクリーン ジェスチャ
  28. 28. ブランド ブランドカラー ブルーから変更可能 チェックボックス プログレスバー タブ スクロール ボタン スライダー ロゴ アプリアイコン領域にアプリアイコン 以外の画像を配置可能
  29. 29. タッチフィードバック KitKat以前 フィードバックカラーは青 KitKat フィードバックカラーは背景色を明るく/暗くし た色に変更 ブランドカラーに適応するため
  30. 30. フルスクリーン フルスクリーン時の操作の追加 Immersive(没入) 上下スワイプから操作パネルを表示する概念を追加
  31. 31. ジェスチャ 概念 タッチ ロングプレス スワイプorドラッグ ロングプレスドラッグ ダブルタッチ ダブルタッチドラッグ(新規) ダブルタッチ後にドラッグを行う 上下、斜めが可能 GoogleMapにてすでに採用されている
  32. 32. 参考 Android Developers http://developer.android.com/index.html Google Developers https://developers.google.com/ ブリリアントサービスブログ http://d.hatena.ne.jp/bs-android/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×