New in Android4.4
Upcoming SlideShare
Loading in...5
×
 

New in Android4.4

on

  • 1,025 views

Android4.4で更新された新機能を4種類についてまとめました。

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

Statistics

Views

Total Views
1,025
Views on SlideShare
1,017
Embed Views
8

Actions

Likes
0
Downloads
3
Comments
0

2 Embeds 8

http://muchiki0226.hatenablog.com 7
https://www.google.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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

New in Android4.4 New in Android4.4 Presentation Transcript

  • 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(getActivity()); bitmapPrinter.setScalemode( PrinterHelper.SCALE_MODE_ FIT); Bitmap bitmap = BitmapFactory.decodeResource( getResources(), R.drawable.droids); bitmapPrinter.printBitmap(“droids.jpg – test print”, bitmap); }
  • 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()
  • 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; } }); }
  • Print HTML 注意点 ヘッダーとフッターは付けれない ページの範囲を設定できない WebViewのインスタンス一つにつき1つの印刷 ジョブしか追加できない
  • Print PDF Canvas 処理の流れ PdfDocmuentからキャンバスを取得する コンテンツをキャンバスに書き込む PdfDocmuentを印刷する 詳細はAndroidDevlopersを確認してね!
  • Apps Indexing
  • Apps Indexing ブラウザでの検索結果にアプリの開くボタンを 追加するディープリンク機能 アプリとWebサイトに情報を付与、サイトに登録 すると利用可能 https://developers.google.com/app-indexing/
  • 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>
  • 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>
  • 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>
  • SMS APIs
  • SMS APIs SMS ContentProvider システム設定で設定したデフォルトアプリのみ 直接のやりとりができる その他のアプリ 読みこむことができる パーミッション必須 書き込みはサイレントなエラーになる
  • なぜデフォルトアプリのみ なのか 信頼性の強化 デフォルトアプリのみメッセージのやり取りを行 うため、不必要な別のアプリの送信をなくし、 ユーザーの知らないところでの送信を防ぐ 複雑さを減らす 別のアプリからのメッセージの削除やメッセージ の変更をしないようにできるため、他のアプリを 考慮した実装が不要
  • 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>
  • 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>
  • 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>
  • 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>
  • デフォルトアプリ変更時 デフォルトアプリ名の取得方法 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にする と元に戻すことが可能
  • 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/ ブリリアントサービスブログ http://d.hatena.ne.jp/bs-android/