Your SlideShare is downloading. ×
0
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
(Google Play Servicesに統合された)Google Drive Android API
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

(Google Play Servicesに統合された)Google Drive Android API

2,029

Published on

Women Techmakers: Kyoto …

Women Techmakers: Kyoto
https://plus.google.com/events/ctt1s9espngv36n5a8jtrrivaq8?hl=ja
で発表するスライド

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

No Downloads
Views
Total Views
2,029
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
1
Comments
0
Likes
3
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

Transcript

  • 1. Women Techmakers: Kyoto Google Playかいはつしゃサービス Google Play Services に統合された Google Drive Android API
  • 2. 自己紹介   Junko Suzuki 愛知県から来ました Weekend Programmer Android/iPhoneの健康管理アプリ 『はかるだけレポート』など公開してます   Google Play   https://play.google.com/store/apps/developer?id=KEROKKO   iTunes   https://itunes.apple.com/jp/artist/junko-suzuki/id454449706
  • 3. なぜGoogle Driveか? 何に使いたいのか? (MYアプリの場合) データのクラウド化ができたら嬉しい                    他のじゃだめなの?(Dropなんたらとか) 身近な非ITな人はアカウント持ってないよ Googleアカウントなら持っていそう GoogleのサービスをAndroidで使う           無理なく使えそう
  • 4. このAPI、前からあったのでは? Google Playかいはつしゃサービス Google Play Serviceに組み込まれ、 更に強力に使いやすく 生まれ変わった!   Google Play Services 4.1でDeveloper Preview版(2014/1月)   Google Play Services 4.2で正式版がリリース(2014/2月)
  • 5. Google Playかいはつしゃサービス Google Play Serviceとは? ある日突然、勝手にインストールされた 謎アプリ 『開発者サービス』という日本語名のため アンインストールする人続出 Google map、Google+、アカウント認証 などで使われる機能が入った、    とても重要なアプリ!     ・・と見せかけたライブラリ的なもの
  • 6. というわけで、まだ生まれたてな 『G Play Serviceに入ってる版      Google Drive Android API』 について、『特長』と『組み込み方』 をまとめました。
  • 7. 特長
  • 8. 特長1 ローカル?意識しなくてOK オフライン時にAPI呼び出しが失敗した時の処理 書かなくっちゃ ↓ 心配無用! ↓ ネットワークにつながっていなくても、電池がな くなっても、 Androidの同期スケジューラーが、勝手に やってくれる
  • 9. 特長2 Android用に作られている G Play Serviceに統合されたことで、       アプリ自体の負担が少ない アプリ(apk)のサイズが大きくならない ↓ ◎ダウンロードが高速に ◎アップデートも少なく ◎メモリの消費も抑えられる 他のデバイス間でも自動的に同期
  • 10. 特長3 UI部品が用意されている ほんの数行のコードで組み込める!
  • 11. 特長4  Storage Access Framework          を使っている Storage Access Frameworkとは・・・    Android 4.4 KitKat でリリース    複数のストレージプロバイダで動作    (クラウドもローカルも含む)    メタデータやシェア機能などへもアクセス つまり、DropboxもGoogle Driveもギャラリーも ダウンロードフォルダも、汎用的に扱える!
  • 12. でも・・・KitKat以降でしか使えないんじゃ? G Drive APIはGoogle Play servicesの一部として提 供されるので、ご心配なく! KitKatだけでなく、 Android 2.3 Gingerbread以上 のデバイスでサポート   (2.2向けの場合G Play Services for Froyoもあり)
  • 13. 組み込み方
  • 14. 全体の流れ 1. G Play Serviceライブラリの準備 ↓ 2. 証明書取得とアプリの登録 ↓ 3. アプリへの組み込み(接続・認証) ↓ 4. アプリへの組み込み         (ファイル読み書き) 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 コード
  • 15. 手順1 ライブラリの準備 Android SDK Manager で 準備 G Play Serviceをインストール ライブラリ G Play Serviceのプロジェクトを 証明書取得 Workspaceにインポート インポートしたライブラリへの 参照を、作成するアプリに設定 接続・認証 ファイル操作 コード
  • 16. 手順1 ライブラリの準備 作成するアプリのManifest ファイルに<meta-data> タグを追加 <meta-data android:name="com.google.android.gms.version“ android:value ="@integer/google_play_services_version“ /> 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 コード
  • 17. 手順1 ライブラリの準備 作成するアプリのproject直下の 準備 proguard-project.txtに追加 ライブラリ -keep class * extends java.util.ListResourceBundle { protected Object getContents(); } ・・・・・略・・・・・ 証明書取得 ※ProGuard(難読化ツール)が  必要なクラスを削除してしまうのを  避けるため 接続・認証 ファイル操作 コード
  • 18. 手順2 証明書取得とアプリ登録 署名付き証明書の SHA1フィンガープリント生成 keytool -exportcert -alias androiddebugkey   -keystore ~/.android/debug.keystore -list -v ターミナルウィンドウから keytool で。 Certificate fingerprints: SHA1: D8:AA:43:97:59:EE:C5:95:26:6A:07:EE:1C:37:8E:F4:F0:C8:05:C8 赤字部分を次の手順内でコピペして使う 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 コード
  • 19. 手順2 証明書取得とアプリ登録 Google Developers Console で アプリ登録しクライアントID 作成 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 前手順のフィンガープリントをペースト コード
  • 20. 手順3  接続・認証 GoogleAPIClientのインスタンス onCreate()の中など mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addConnectionCallbacks(this) ※ .addOnConnectionFailedListener(this) ※ .build(); ※ G Play Serviceとの接続が   成功 / 失敗した時の処理を行うため 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 コード
  • 21. 手順3  接続・認証 接続と解除 @Override protected void onStart() { super.onStart(); if (!mResolvingError) { ※ mGoogleApiClient.connect(); } } @Override protected void onStop() { mGoogleApiClient.disconnect(); super.onStop(); } ※ 画面回転時など用にonSaveInstanceStateでエラー保持 準備 ライブラリ 証明書取得 接続・認証 ファイル操作 コード
  • 22. 手順3  接続・認証 接続成功 (^-^)v @Override public void onConnected(Bundle connectionHint) { // Google Play Serviceに接続成功! // ファイル操作へ進んでください } 接続失敗 ・G Play Serviceが古い (T_T)・アカウント認証前、など 準備 ライブラリ 証明書取得 接続・認証 @Override public void onConnectionFailed (ConnectionResult result) { // 接続できなかった! ファイル操作 // Serviceインストールや認証ダイアログへ } コード
  • 23. G Play Serviceが端末に 入っていないOR古い インストール するよう誘導 勝手にやってくれる!
  • 24. アプリから初めて G Play Serviceを使う アカウントの選択 から認証まで 勝手にやってくれる!
  • 25. 手順3  接続・認証 既に認証済みで、何も問題なければ 準備 ライブラリ ユーザーから見て、 何もイベントは起こらない アプリ内部では 接続処理が行われる 証明書取得 接続・認証 ファイル操作 コード
  • 26. 手順4 ファイル作成・編集 Contentsを作り コールバックを設定 Drive.DriveApi.newContents(mGoogleApiClient) .setResultCallback(fileCallback); コールバック内でresult.contents のOutputStreamに書き込み 新規ファイル作成Activity起動 準備 ライブラリ 証明書取得 認証 ファイル操作 コード
  • 27. 新規ファイル作成Activityとは? MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder() .setMimeType("text/plain") .setTitle("GDriveTest.txt").build(); IntentSender intentSender = Drive.DriveApi .newCreateFileActivityBuilder() .setInitialMetadata(metadataChangeSet) .setInitialContents(result.getContents()) .build(mGoogleApiClient); startIntentSenderForResult(intentSender, CREATE_REQUEST_CODE, null, 0, 0, 0); DriveApiに用意されていて
  • 28. 勝手にやってくれる!
  • 29. (ピッカーを出さず) 単にファイルを作りたいだけの場合は? Drive.DriveApi.getRootFolder(mGoogleApiClient) .createFile(mGoogleApiClient, metadataChangeSet, result.getContents()) .setResultCallback(fileCallback); その他にも、フォルダ操作など 色々なメソッドが用意されている でも、ちょっと注意!
  • 30. ファイル名はユニークじゃない 同名ファイルが複数ある可能性 既存ファイルへのアクセスは DriveIDオブジェクトを使う (ファイル名で識別しないこと) (A) クエリで検索をかけてDriveIDをゲット     OR (B) リソースID (文字列)をどこかに保持                     
  • 31. (A) ファイル名で問い合わせ → DriveID               (複数ある可能性も要考慮) Query query = new Query.Builder() .addFilter(Filters.eq(SearchableField.TITLE, filename)) .build(); Drive.DriveApi.query(mGoogleApiClient, query) .setResultCallback( new ResultCallback<DriveApi.MetadataBufferResult>() { @Override public void onResult(DriveApi.MetadataBufferResult result) { ・・・・ } ※クエリ対象: MIME_TYPE, MODIFIED_DATE, }); PARENTS, STARRED, TITLE, TRASHED ResultのcontensからgetDriveId()でゲット
  • 32. (B) リソースID (文字列) → DriveID 既存のリソースIDを渡し、コールバックをセット Drive.DriveApi.fetchDriveId(mGoogleApiClient, EXISTING_FILE_ID) .setResultCallback(idCallback); コールバックのresult.getDriveId()でゲット (A)(B) どちらかの方法で DriveIDをゲットしたら
  • 33. DriveIDを使ってファイル編集 DriveIDからDriveFileをゲット DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, result.getDriveId()); Open → Edit → Close ContentsResult contentsResult=file.openContents( mGoogleApiClient, DriveFile.MODE_WRITE_ONLY, null); OutputStream outputStream = contentsResult.getContents().getOutputStream(); outputStream.write("Hello world".getBytes()); file.commitAndCloseContents(mGoogleApiClient, contentsResult.getContents());
  • 34. 最後に Google DevelopersのGoogle Drive Android API 解説部分を日本語に訳しました。 http://junsuke.hatenablog.com/entry/2014/02/20/095631 Android Studioを使う場合やフォルダ操作など、 今回触れなかったケースについても解説されてい ますので詳しくはそちらを。
  • 35. 資料 Google Developers “Google Drive Android API” https://developers.google.com/drive/android/ Android Developers “Google Drive Android API” https://developer.android.com/google/play-services/drive.html Android Developers “Google Play Services” https://developer.android.com/google/play-services/index.html GitHub: googledrive / android-demos https://github.com/googledrive/android-demos

×