月別アーカイブ: 2015年10月

AWS S3のSDKを使ってみる2 AndroidStudio編


前回はAmazon Cognitoの設定までやりましたので、
今回AndroidStudioの準備をしてみます。

AndroidStudioでBlankActivityを作った状態から始めます。

まずbuild.gradleに以下を追記します。
これはSet Up the AWS Mobile SDK for Androidに記載されていました。
S3だけに絞って見ると下記3点です。

  • ‘com.amazonaws:aws-android-sdk-core:2.+’
  • ‘com.amazonaws:aws-android-sdk-cognito:2.+’
  • ‘com.amazonaws:aws-android-sdk-s3:2.+’

次にAndroidManifest.xmlにINTERNETのパーミションを設定します。

AndroidStudio自体の設定は以上です。

今後SDKを使う上で必ずCognitoの認証が必要になり、そのサンプルコードがCognitoのコンソールから取得可能です。
Cognitoのコンソールから作成したidentity poolを選択し、その左側のフレームのSample codeをクリックします。
「Get AWS Credentials」にサンプルコードが表示されるので、コピペします。
CognitoCachingCredentialsProvider型のインスタンスを使います。

今回は以上です。


AWS S3のSDKを使ってみる1 前準備編


AWS S3をAndroidアプリから操作をしたくてS3のSDKを使ってみました。
まず、S3用のSDKがあるわけではなくて、AWS Mobile SDKの機能の一部になります。

SDK(Android以外も)はここにまとまってあります。
アマゾン ウェブ サービスのツール

Androidのインストールのリンクからzipをダウンロードできますが、
AndroidStudioのGradleからでも設定可能です。
Gradleの方が楽だと思います。

S3をアプリから使うにはいろいろ前準備が必要ですので、順番に見ていきたいと思います。

AWS Mobile SDKについてのページにはざっくりとSDKについて記載があります。
AWS Mobile SDK

この中からAndroidの開発者ガイドを見てみます。
開発者ガイド

What is the AWS SDK for Android?にはSDKで何ができるのか記載されています。
AWS全部をSDKから触れる訳ではなさそうです。

次にSDKを使うためのセットアップを見てみます。
Set Up the AWS Mobile SDK for Android

事前に必要なもの

  • AWS アカウント
  • Android 2.3.3 (API Level 10) 以上
  • AndroidStudioもしくはADT

特に変わったものはありません。

始めるにあたって必要なもの

  • AWS Mobile SDK for Androidを取得する
  • AndroidManifest.xmlにINTERNETのパーミッションを設定する
  • Amazon Cognitoを使ってAWSの資格情報を取得する

最後のAmazon Cognitoというのを使って何かする必要がありそうです。

Identity and Access Management(IAM)でアカウントの作成

※ 2015/10/23 追記
Amazon Cognitoでの作業の前にIdentity and Access Management(IAM)でアカウントを作成した方が良いです。
すでに作成済みであればとばしてください。

AWSにメールアドレスで登録したアカウントはルートアカウントと呼ばれていて、
請求等なんでも出来るアカウントなので普段使うアカウントでは権限が強すぎると思います。
そこでIAMアカウントを新たに作成します。
下記サイトで勉強させてもらいました。

AWSのアカウント開設後にすべき事をまとめてみた

グループの作成 –> ユーザの作成 –> ユーザをグループに登録の順番です。

グループの作成

管理者権限のグループを作成します。

  1. コンソールのサービス一覧からIAMを選びます。
  2. グループを選択し、新しいグループの作成ボタンをクリックします。
  3. グループ名に名前をつけ次のステップに進みます。今回はAdministratorsとします。
  4. ポリシーの一覧からAdministratorAccessを選択し、次のステップに進みます。
  5. グループの作成をクリックします。

ユーザの作成

  1. ユーザーを選択し、新規ユーザーの作成ボタンをクリックします。
  2. ユーザー名を入力します。
  3. ユーザーごとにアクセスキーを生成のチェックを外し、作成ボタンをクリックします。チェックを付けとくとアクセスキーとシークレットキーを作成できますが、次のCognitoを使ってアクセスするので不要です。

グループへ登録

  1. ユーザ一覧の画面に戻っていると思いますので、一覧から作成したユーザをクリックします。
  2. グループ欄にグループにユーザーを追加ボタンがありますので、クリックします。
  3. 作成したAdministratorsを選択し、グループに追加ボタンをクリックします。
  4. ついでにサインイン認証情報からパスワードの管理ボタンをクリックし、パスワードを設定しておきます。

ついでにパスワードの設定を行いましたが、MFAと呼ばれるものを使ったほうがセキュリティ的には良いようです。

作成したユーザでログインし直す

IAMのダッシュボードに戻るとIAM ユーザーのサインインリンクというのがあります。
一旦サインアウトして、リンクのURLにアクセスしてください。
作成したアカウントでログインします。

Amazon Cognito

Amazon Cognitoはアカウント管理の機能です。
下記のサイトで勉強させてもらいました。
Amazon Cognitoについて – AWSが提案するモバイル時代のアカウント管理
[Amazon Cognito] Cognito の導入方法がより簡単になりました!

Cognitoのコンソールからidentity poolを作っていきます。

  1. リージョンを選びます。今回は東京を選びます
  2. Get Startedをクリックしウィザードを開始します
  3. Identity pool nameに名前を入れます
  4. Enable access to unauthenticated identitiesのチェックを入れます
  5. Create Poolをクリックします
  6. IAMのロール追加画面になりますが、そのまま許可をクリックします

Cognitoの設定は以上です。

この後はAndroidStudioを立ち上げ、AWS Mobile SDKをGradleに設定しSDKを使っていきます。
次回へ続く。


Android6.0でAndroid File Transfer(AFT)が繋がらない


MacとAndroidをUSB接続してファイル転送するときにはAndroid File Transfer(AFT)を使いますが、
Android6.0にしたら繋がらなくなってしまったので、その対応方法です。

AFTで繋がらない

Android File Transferで繋がらない

エラー内容

Can’t access device storage
If your devices’s screen is locked, disconnect its USB
cable, Unlock your screen, and then reconnect the
USB cable.

画面ロックが掛かっていてUSB接続出来ないとの内容ですが、
ロック解除しているので、別に原因がありそうです。

対応

このエラー内容でググるとオフィシャルのヘルプページが見つかりました。
パソコンと Android 搭載端末間のファイル転送

USB 経由でファイルを転送できないの項目を見ると、
接続する方式を「メディアデバイス(MTP)」にすれば良さそうです。
しかし、Android6.0では設定場所が変わったようなので、設定場所を探しました。

※2015/10/23 追記
もっと簡単な方法がありましたので追記します。
USBを接続するとステータスバーには何も出ていませんが、
“USBを充電に使用”と通知が出ています。
この通知をタップすると下記のダイアログが表示されます。

USBの使用

ここから”ファイルの転送(MTP)”を選択するとAndroid File Transferでフォルダが開きます。

しかし、再度USBを接続するとまたエラーが出るので、上記手順をやり直します。。。

————下記、手順は不要でした。————

  1. 開発者オプションを有効にします。
    1. 端末情報 > ビルド番号を開発者オプションが有効になるまで連打
  2. 開発者オプション > USB設定の選択
    1. 元々、MTPが選択されていますが、一度、PTP等、他のものを選んでからMTPに戻します。

Android File Transferが動いていれば端末を認識してフォルダが開きます。

以上です。