Seesaa京都アプリエンジニアブログスマートフォン専用ページを表示Seesaa京都でアプリ開発しているエンジニアが定期的につぶやきます。>>2016年04月11日ArrayAdapterのコンストラクタのResourceIDの役割こんにちは、Androidエンジニアの外山です。今回はAndroidのListViewなどにセットするArrayAdapterのコンストラクタで指定するResourceIDの役割について調べてみました。ArrayAdapterのコンストラクタArrayAdapterのコンストラクタは以下のようになっています。textViewResourceId;}ResourceIDの使用箇所mResourceとmFieldIdはgetViewでViewインスタンスを作成する時に使用されています。mResourceはViewのレイアウトファイルを参照する際に、mFieldIdはレイアウトファイル内のTextViewを指定する際に使用されているようです(指定しなかった場合は生成したView自身をTextViewとして扱う)。view;}mDropDownResourceも同じような感じになっています。まとめgetViewをオーバーライドしてsuperメソッドを呼ばない場合は、引数で渡したResourceIDが使われることはないので`-1`など適当な値を渡しておけば大丈夫である。リスト内のアイテムで一つのTextViewにのみ値をセットする場合はResourceIdを指定することでサブクラスを作成せずにAdapterを作成できるようだ。RecyclerViewの登場によって使う機会が減ってきたListViewやGridViewですが簡単なリストを作成する際には手軽に使えていいですね。|2015年10月23日[Android]Robolectricを使ったテスト用ファイル読み込み主にAndroidアプリ開発をしている外山です。Androidのユニットテスト時にテスト用のファイルを読み込む方法について調べてみました。resources")));}getClass().getResourceAsStream(path)を使用することでresourcesディレクトリ内のファイルへアクセスするためのInputStreamを取得することができますまとめAPIサーバーからのレスポンスをモックする際などコードに文字列を埋め込むのはつらいものがあるのでファイルから読み込めるというのはとても便利なのでテスト用に長い文字列を使いたい時などは使っていきたいですね。今回はファイルから文字列を取得しましたが画像の読み込みなどももちろんできるので用途に応じて使い分けましょう。APIを試してみる久しぶりにガンプラを買いました、森脇です。APIについて書いていきたいと思います。APIは、Googleが提供しているAPIの一つで、近くにあるスマートフォンやタブレット端末同士でのメッセージのやり取りを可能にするAPIです。APIの場合はそうではなく、あくまでデータの送受信はサーバーを介して行われます。その送受信の際にBluetooth、BLE、WiFi、超音波などを用いることで相手を特定しています。上記のような仕組みになりますのでネットワーク接続は必須となりますが、送信側の端末と受信側の端末が同じネットワークに接続している必要はありません。APIは同じネットワークに接続している端末間でのデータの送受信を可能にするAPIですので注意が必要です。APIを使うための準備を進めていきましょう。ConsoleにてAPIキーを取得します。GoogleMapsなどのAPIキーを取得する場合と手順は同じです。詳しい手順はこちらに記載してあります。Servicesを追加します。build.gradleに以下の記述を追加します。7.8.0以降でのみ扱えます。今回は8.1.0を使用します。'com.google.android.gms:play-services-nearby:8.1.0'}AndroidManifestに以下の記述を追加します。</activity></application>これで準備は完了です。それでは以下に簡単な実装の流れを書いていきます。Clientを作成する必要があります。この際、接続に成功した場合と失敗した場合のコールバックをそれぞれ追加することができます。Clientへの接続に成功した場合の処理を以下のように記述します。APIを使うにあたってユーザーからパーミッションの許可を得ているかどうかを確認しています。許可を得ていることが確認できた場合、メッセージを受信できる状態に移行します。APIを使用した際の共通のコールバックとして以下のように定義しています。パーミッションエラーが出た場合のみユーザーにパーミッションの許可を促すダイアログを表示します。}}パーミッション確認ダイアログの結果はonActivityResultで受け取ります。APIはバッテリーの消耗が激しいため、必ずライフサイクルに応じて接続を解除するようにしてください。super.onStop();}メッセージの送受信まず送受信するメッセージはバイト配列でやり取りされます。データサイズは3KB以内が推奨とされていて、画像や動画などの大きなファイルのやり取りは想定されていません。送信の場合、PublishOptionsでメッセージの送受信が有効な距離や送信状態を維持する時間などをStrategyにて設定することができます。Services8.1.0以降から送信状態が終了した際のコールバックを設定することができます。ErrorCheckingCallback("unpublish"));}受信の場合は、あらかじめメッセージを受信した時の処理としてMessageListenerを定義しておきます。}};SubscribeOptionsではPublishOptionsと同様の設定に加えて、Strategyにて受信するメッセージのフィルターを設定することができます。ErrorCheckingCallback("unsubscribe"));}以上です。ソースコードはこちらに置いておきます。こちらのサンプルでは受信が成功すると相手の端末上のUUIDがToastで表示されます。所感アプリへ組み込む場面がかなり限定される機能ではありますが、今までQRコードを撮影したり、振った端末同士の位置情報を介していたID交換などがよりスムーズに行えるようになるかもしれないですね。実装自体はかなりお手軽というわけではなく、少しクセのあるAPIだとは思いますが、AndroidだけではなくiOSでも利用可能ということなので、そのあたりも含めて今後の開発に期待していきたいです。>>×この広告は180日以上新しい記事の投稿がないブログに表示されております。