32
New in Andriod 4.4 〜 Printing API, App Indexing, SMS Service, ADiA 〜 〜〜〜〜 (@muchiki0226) 2013/11/4

New in Android4.4

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: New in Android4.4

New in Andriod 4.4〜 Printing API, App Indexing, SMS Service, ADiA〜木村尭海 (@muchiki0226)2013/11/4

Page 2: New in Android4.4

目次Printing API

App Indexing

SMS Service

Android Design in Action

Page 3: New in Android4.4

Printing API

Page 4: New in Android4.4

Printing API

プリント機能でサポートするものPrint Managerアプリとサービス間を仲介する

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

Serviceプリント要求を操作する

Page 5: New in Android4.4

Priter Framework

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

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

ユーザープリンターサービスを取得しアプリでコンテンツを印刷することができる

Page 6: New in Android4.4

Printing API

3種類の方法があるPrint bitmaps(easy)

Print HTML from web view(easy)

Print PDF Canvas(complex)

Page 7: New in Android4.4

Print bitmaps

2種類の印刷タイプを選べことが可能SCALE TO FIT

SCALE TO FILL

Page 8: New in Android4.4

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);}

Page 9: New in Android4.4

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()

Page 10: New in Android4.4

Print HTMLvoid 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; } });}

Page 11: New in Android4.4

Print HTML

注意点ヘッダーとフッターは付けれないページの範囲を設定できないWebViewのインスタンス一つにつき1つの印刷ジョブしか追加できない

Page 12: New in Android4.4

Print PDF Canvas

処理の流れPdfDocmuentからキャンバスを取得するコンテンツをキャンバスに書き込むPdfDocmuentを印刷する

詳細は AndroidDevlopersを確認してね!

Page 13: New in Android4.4

Apps Indexing

Page 14: New in Android4.4

Apps Indexing

ブラウザでの検索結果にアプリの開くボタンを追加するディープリンク機能アプリとWebサイトに情報を付与、サイトに登録すると利用可能

https://developers.google.com/app-indexing/

Page 15: New in Android4.4

HTMLの変更android-appを追加するフォ r−マット

android-app://{package_id}/{scheme}/{host_path}

<html><head> ... <link rel="alternate" href="android-app://com.example.android/example/gizmos" /> ...</head><body> … </body>

Page 16: New in Android4.4

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="android-app://com.example.android/gizmos" /></url>...</urlset>

Page 17: New in Android4.4

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>

Page 18: New in Android4.4

SMS APIs

Page 19: New in Android4.4

SMS APIs

SMS ContentProviderシステム設定で設定したデフォルトアプリのみ直接のやりとりができる

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

書き込みはサイレントなエラーになる

Page 20: New in Android4.4

なぜデフォルトアプリのみなのか

信頼性の強化デフォルトアプリのみメッセージのやり取りを行うため、不必要な別のアプリの送信をなくし、ユーザーの知らないところでの送信を防ぐ

複雑さを減らす別のアプリからのメッセージの削除やメッセージの変更をしないようにできるため、他のアプリを考慮した実装が不要

Page 21: New in Android4.4

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></receiver>

Page 22: New in Android4.4

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

android.permission.BROADCAST_WAP_PUSH

フィルターAction:「 android.provider.Telephony.WAP_PUSH_DELIVER」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>

Page 23: New in Android4.4

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>

Page 24: New in Android4.4

Service

他のアプリにメッセージが届いたことを即座に知らせるためのサービスパーミッション

android.permission.SEND_RESPOND_VIA_MESSAGE

フィルターAction:「 android.intent.action.RESPOND_VIA_MESSAGE」Data:「 sms」 ,「 smsto」 ,「mms」 ,「mmsto」

<service android:name=".HeadlessSmsSendService" android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" 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>

Page 25: New in Android4.4

デフォルトアプリ変更時デフォルトアプリ名の取得方法

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

デフォルトアプリを変更した際は元のデフォルトアプリに戻す必要がある場合は content.getPackageName()を defaultSmsAppにすると元に戻すことが可能

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);

Page 26: New in Android4.4

Android Design in Action

Page 27: New in Android4.4

Android Design in Action

新しい UIとデザインガイドラインについてブランドタッチフィードバックフルスクリーンジェスチャ

Page 28: New in Android4.4

ブランドブランドカラーブルーから変更可能チェックボックスプログレスバータブスクロールボタンスライダー

ロゴアプリアイコン領域にアプリアイコン以外の画像を配置可能

Page 29: New in Android4.4

タッチフィードバックKitKat以前フィードバックカラーは青

KitKatフィードバックカラーは背景色を明るく /暗くした色に変更ブランドカラーに適応するため

Page 30: New in Android4.4

フルスクリーンフルスクリーン時の操作の追加

Immersive(没入 )上下スワイプから操作パネルを表示する概念を追加

Page 31: New in Android4.4

ジェスチャ概念タッチロングプレススワイプ orドラッグロングプレスドラッグダブルタッチダブルタッチドラッグ(新規)ダブルタッチ後にドラッグを行う上下、斜めが可能

GoogleMapにてすでに採用されている

Page 32: New in Android4.4

参考Android Developers

http://developer.android.com/index.html

Google Developershttps://developers.google.com/

ブリリアントサービスブログhttp://d.hatena.ne.jp/bs-android/