Xで騒いでいる中、Zenfone4を購入しました。今まで使用していたNexus5Xが再起動ループを発症してしまい、復旧の見込みはないので新しいのを探していました。つなぎに更に前に使用していたXperiaAでなんとかしのぎつつ、Pixel2を待ってみたものの日本の発売はなし。ならないので新調した次第です。liteも候補にしましたがバックドア問題がまだ気になるのでASUSのZenfone4にしました。Android8にも上がる予定になっているので楽しみですね。箱の中身を全部出しました。本体スマホケーススマホケースがついてくるなんて珍しいですね。Zenfone4は、Snapdragon660・メモリが6GBのモデルとSnapdragon630・メモリ4GBの2つモデルがあります。購入したのは前者のSnapdragon660・メモリが6GBです。性能が良いのでしばらくは使えそうです。手に持った感じはでかいですね。親指がバックキーに届かないですw最近のスマホは大きいサイズばかりなので慣れるしかないですね。使った感じではキビキビ動いています。タップしたらすぐ動く感じです。アニメーションして動くというよりかはすぐ、キビキビと動くイメージです。スマホ交換と一緒にMVNOも変更しました。iijmioを使っていましたが、スマホセットで購入すると安くなるのとキャッシュバックにひかれてBIGLOBEモバイルです。ググった感じではまぁ悪くはなさそうなのかなと。すごい回線速度が早いわけではないけど、極端に遅くもならないのかなぁと。それよりはキャッシュバック額の影響が大きいです。Startedをやってみました。基本的には公式ページをそのままやれば動きますが、とこどころそのままではダメでした。ANDROID”のリンクをクリックし上から順にやっていきます。サンプルアプリを取得します。Inのサンプルを含んでいます。今回はGCMのサンプルを使用します。cloneしてくれば大丈夫です。etc.))を使用します。インポートしてもAndroidStudioがビルド構成を理解してくれず、そのままではビルド、実行ができません。後述するサンプルアプリのビルド、実行を先にしておく必要がありました。(これは別のやり方があるのかもしれません)設定ファイルの取得と設置さっそくプロジェクトのビルドをしたいのですが、その前にGCM用の設定ファイルの作成が必要です。FILE”とあるボタンをクリックします。ConsoleのAPIマネージャーを使用するので、Googleアカウントでログインが必要なります。ログインすると設定ファイル作成画面になります。name・・・gcm.play.android.samples.com.gcmquickstartのままで、次に進みます。そのまま次に進みます。ファイルが生成されるとダウンロードページになるので、”google-service.json”をダウンロードします。次にダウンロードしたファイルをサンプルプロジェクトに設置します。google-service.jsonをサンプルプロジェクトのapp/下に置きます。サンプルアプリのビルド、実行サンプルプロジェクトをcloneした直後ではAndroidStudioがプロジェクト構成を認識してくれないので手動でビルドします。app-debug-unaligned.apkでアプリをインストールします。ビルドするとAndroidStudioがビルド構成を認識してくれるので、AndroidStudioからビルド実行が可能になります。サンプルアプリを実行すると最初GCMへの登録処理が行われます。登録処理後にサンプルプロジェクトからメッセージを送信します。サンプルプロジェクトで、メッセージ送信用のプログラムを動かします。-Pmsg=”test”サンプルプログラムのビルド後に実行されます。待つと端末にメッセージが着信します。macchan-devABC2016Springに行ってきましたコメントをどうぞTweetABC2016Springに行ってきました。今回はAndroidメインではなくて、IoTに関わる事、機械学習が多いようでした。好みの画像を自動で収集したいという内容で、TensorFlowを触ってみようと思わせる素晴らしいものでした。動機が明確なのが一番ですね。何千台のコンピュータをコマンド1つで使えるというすごい話だなと。画像によっては緯度経度まで出るそうです。ストリートビューのデータを使っているそう。カスタマイズが出来ないので、その場合は、TensorFlowを使いましょうとの事。Translatorが、英語、ラテン系の言葉ならほぼリアルタイムで変換できて、品質も良いとの事。今は、ハードとかコストが下がっていてデータと機械学習で結果を出すのもあり。HoloLensもアルゴリズムより機械学習を使っている。APIというのがあるようです。Nishitani講演者のブログです。デバイスとクラウドの接続パターンAndroidをBLEで繋いでゲートウェイとして使用Android自身をセンサーデバイスとなる(GPSとか)収集、分析したデータを可視化などビューアとして使用。Hubを使うのが一番手っ取り早いのかなと思いました。SIM使うと解決しましょうという内容でした。モノの接続方法には、Air。セキュリティ、通信プロトコルには、Beam。SORACOMの詳しい説明を初めて聞きましたが、ネットワークに繋げる必要があるなら使ってみたいと思いました。1年間の無料枠あり、詳しくはWebへとの事。実践編コメントをどうぞTweet前回までは環境構築でした。今回は実際にプログラムを書いて動かしてみます。ソースはGitHubにアップしました。https://github.com/macchan-dev/AmazonS3Sample以下の動作をします。ファイルをS3にアップロードTransferUtilityを使った組み込み方が公式ドキュメントにまとまっているので分かりやすいと思います。(S3)大まか流れとしては、以下のとおりです。codeにあるCognitoCachingCredentialsProviderを作成します。CognitoCachingCredentialsProviderインスタンスを引数にAmazonS3Clientを作成します。AmazonS3Clientインスタンスを引数にTransferUtilityを作成します。TransferUtility#uploadを使用しファイルをアップロードします。注意点としては、AndroidManifest.xmlにTransferServiceの記述がないとうんともすんとも言いません。進捗状況も取得できるので使いやすいと思いました。細かいこと(オブジェクトの権限変更等)は出来ないので、別途SDKのAPIを叩く必要があります。今回は、オブジェクトのリスト取得にRxJavaを使いました。RxJavaについては以下が詳しかったです。今回AndroidStudioの準備をしてみます。AndroidStudioでBlankActivityを作った状態から始めます。build.gradleに以下を追記します。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のパーミションを設定します。android:name="android.permission.INTERNET"/>AndroidStudio自体の設定は以上です。今後SDKを使う上で必ずCognitoの認証が必要になり、そのサンプルコードがCognitoのコンソールから取得可能です。codeをクリックします。Credentials」にサンプルコードが表示されるので、コピペします。CognitoCachingCredentialsProvider型のインスタンスを使います。S3をAndroidアプリから操作をしたくてS3のSDKを使ってみました。SDKの機能の一部になります。SDK(Android以外も)はここにまとまってあります。サービスのツールAndroidのインストールのリンクからzipをダウンロードできますが、AndroidStudioのGradleからでも設定可能です。Gradleの方が楽だと思います。S3をアプリから使うにはいろいろ前準備が必要ですので、順番に見ていきたいと思います。SDKについてのページにはざっくりとSDKについて記載があります。SDKこの中からAndroidの開発者ガイドを見てみます。Android?にはSDKで何ができるのか記載されています。AWS全部をSDKから触れる訳ではなさそうです。次にSDKを使うためのセットアップを見てみます。以上AndroidStudioもしくはADT特に変わったものはありません。Cognitoというのを使って何かする必要がありそうです。Management(IAM)でアカウントを作成した方が良いです。作成済みであればとばしてください。請求等なんでも出来るアカウントなので普段使うアカウントでは権限が強すぎると思います。そこでIAMアカウントを新たに作成します。下記サイトで勉強させてもらいました。ユーザをグループに登録の順番です。管理者権限のグループを作成します。コンソールのサービス一覧からIAMを選びます。グループを選択し、新しいグループの作成ボタンをクリックします。グループ名に名前をつけ次のステップに進みます。今回はAdministratorsとします。ポリシーの一覧からAdministratorAccessを選択し、次のステップに進みます。グループの作成をクリックします。ユーザの作成ユーザーを選択し、新規ユーザーの作成ボタンをクリックします。ユーザー名を入力します。ユーザーごとにアクセスキーを生成のチェックを外し、作成ボタンをクリックします。チェックを付けとくとアクセスキーとシークレットキーを作成できますが、次のCognitoを使ってアクセスするので不要です。グループへ登録ユーザ一覧の画面に戻っていると思いますので、一覧から作成したユーザをクリックします。グループ欄にグループにユーザーを追加ボタンがありますので、クリックします。作成したAdministratorsを選択し、グループに追加ボタンをクリックします。ついでにサインイン認証情報からパスワードの管理ボタンをクリックし、パスワードを設定しておきます。ついでにパスワードの設定を行いましたが、MFAと呼ばれるものを使ったほうがセキュリティ的には良いようです。ユーザーのサインインリンクというのがあります。サインアウトして、リンクのURLにアクセスしてください。作成したアカウントでログインします。Cognitoはアカウント管理の機能です。下記のサイトで勉強させてもらいました。poolを作っていきます。リージョンを選びます。PoolをクリックしますIAMのロール追加画面になりますが、そのまま許可をクリックしますCognitoの設定は以上です。SDKをGradleに設定しSDKを使っていきます。Transfer(AFT)を使いますが、Android6.0にしたら繋がらなくなってしまったので、その対応方法です。cable.画面ロックが掛かっていてUSB接続出来ないとの内容ですが、ロック解除しているので、別に原因がありそうです。対応このエラー内容でググるとオフィシャルのヘルプページが見つかりました。接続する方式を「メディアデバイス(MTP)」にすれば良さそうです。Android6.0では設定場所が変わったようなので、設定場所を探しました。追記もっと簡単な方法がありましたので追記します。“USBを充電に使用”と通知が出ています。この通知をタップすると下記のダイアログが表示されます。Transferでフォルダが開きます。開発者オプションを有効にします。MTPが選択されていますが、一度、PTP等、他のものを選んでからMTPに戻します。Transferが動いていれば端末を認識してフォルダが開きます。Nexus(SC-04D)をLollipopにしてみました。Nexusは標準ROMをずっと使っていたので、カスタムROM導入は初になります。やったことを順番に書いていきます。SDKは導入済みで、必要なパスは通ってる前提です。ブートローダーのアンロックターミナルから以下のコマンドを実行します。unlockアプリや写真等のデータはすべて消えて、初期の状態になります。Nexusを再起動し、アカウントの設定等を行います。アンロック後すぐにTWRPのバックアップを行うと下記エラーが発生し、バックアップが取れませんでした。Nexus用のイメージを取得します。公式サイトにアクセスします。Nexus”で検索します。(maguro)”のリンクをクリックします。(Recommended)”のリンクをクリックします。最新のイメージをダウンロードします。TWRPを起動します。標準ROMのバックアップTWRPが起動したら”Backup”ボタンをタップします。system等全部のチェックボックをONにしてバックアップを始めます。Nexusを再起動します。端末ストレージ内にあるTWRPのディレクトリをPCにコピーしておきます。不要だったのでインストールはしませんでした。Nexusのイメージがあったので、これを使用しました。“Download:”にあるカスタムROMのファイルをダウンロードします。GAPPSのリンクもありますが、このGAPPSを使用したら、Android起動直後の設定で先に進まなかったので、別物を使用しました。別のGAPPSを使用しました。PACKAGE”を使用しました。PACKAGE”を使用しましたが、ROM焼き時にファイルが大きすぎてエラーが出たため、”MINI”の方を使用しました。Nexusのストレージにコピーします。ストレージのルートにコピーしました。NexusとMacをUSBケーブルで接続し、下記コマンドでTWRPを起動します。twrp-2.8.7.0-maguro.img6.2.Wipe次にインストール先を消去します。“Wipe”をタップします。Wipe”をタップします。“System”、”Data”、”Cache”を選択します。Wipe”でデータを消去します。これはやらなくても良いのかもしれませんが、消しといたほうがキレイなかと思ってのことです。Install次にインストールをします。“Euphoria-OS-1.1-maguro-UNOFFICIAL-20150601.zip”をタップします。Zips”をタップします。“tk_gapps-modular-micro-5.1.1-20150705-signed.zip”をタップします。Flash”をスワイプします。cache/dalvik”をタップしワイプしておきます。System”で再起動します。macchan-devOkHttpとRetrofitとGsonのサンプルコメントをどうぞTweet使ったことのないライブラリを使ってみました。GitHubにソースを置きました。https://github.com/macchan-dev/LibrarySampleOkHttpSquare製の通信ライブラリ。AsyncTask+HttpClientで書いていたのが嘘のように簡単に使えました。使ってみた基本的に書いてあるとおりに実装すれば動きます。executeメソッドは同期、enqueueメソッドは非同期で呼び出されます。UIスレッドでexecuteを呼ぶと例外が発生するので注意です。GsonGoogle製のJSONとJavaオブジェクトの変換ライブラリです。JSONObjectを使っていた部分を置き換えられます。参考サイト公式サイトGSONの基本的な使い方JSONデータに合わせてJavaクラスを作っていくのが面倒ですが、それさえ出来てしまえば変換は楽でした。RetrofitSquare製の通信ライブラリ。使い方がなかなか理解しづらかったですが、API毎にメソッドを作っていくの作りやすいのかなと思いました。参考サイト公式サイトRetrofitを試してみるRetroFitでAndroidのREST通信&JSON変換を幸せにするレスポンスでJSONを受け取る時は、受け取るJavaクラスを指定するだけで良かったのですがはまりました。macchan-devDroidKaigiの感想コメントをどうぞTweetDroidKaigiに参加してきましたので感想を。知らないことが多かった。AsyncTaskを使っているところを見直そう。AnColeRetrofitRxJavaPicassoEventBusFragmentを色々と使ってみよう。時間配分がうまく出来てる発表者はすごいなと思った。Frilさんのスライドは本編+おまけという構成で時間配分がぴったりでした。した話ではなくて具体的な話ばかりだったので、調べてみよう、試してみようという気持ちになりました。別セッションのブログ報告があると嬉しいな。反対側のセッションも気になる。参加枠に入れたので感想を書きます。