サンプルと要点 unable to bind to a service - Android Developers | Google Groups の一番最後に実装例が紹介されていた。要はAIDL(Android Interface Definition Language)を用意すればOK。 Remote Service(提供側) cw-advandroid/AdvServices/RemoteService at master · commonsguy/cw-advandroid · GitHub aidlファイルを作成し、コード(interface)を自動生成する。ADTで開発しているのであれば、ファイルを作成した時点で自動的にgenへ生成される。 aidlファイルから自動生成したinterfaceのStubを実装する。 Serviceを実装し、onBind()の戻り値として、先ほど作成
サービスはバックエンドで処理を行います。例えばサービスで処理が完了したタイミングで画面にメッセージを表示したい場合等、サービスとアクティビティとのやりとりを行いたいときは、どうしたらよいでしょうか。 ここではブロードキャストレシーバでそれを実現する方法を紹介します。 ブロードキャストレシーバーの利用 アンドロイドではインテントをブロードキャストする仕組みがあります。ブロードキャストされたインテントは、ブロードキャストレシーバにて受け取れます。 registerReceiver でインテントフィルタとブロードキャストレシーバーを登録します。すると、そのインテントを指定したレシーバーで受け取れるようになります。 サービス側では特定のインテントをブロードキャストすることによって、アクティビティ側でそれを受けとることができる、ということになります。 ここではサービス終了時に、次のような Toast
Androidには明示的/暗黙的インテントの他にブロードキャストインテントという仕組みがあります。 明示的/暗黙的インテントは特定のアクティビティのみが受信するのに対して、 ブロードキャストインテントは複数の受信者(レシーバ)が受信することができます。 ブロードキャストインテントの一例を挙げます。例えば、 ・バッテリー残量が残り少なくなった ・スクリーンがONになった といったイベントが発生したとき、Androidシステムはブロードキャストインテントを送信します。 複数の受信者はこれらのインテントを受け取ることで、イベント発生を知ることができ、各々の適切な処理を行うことができます。 システムから送信されるブロードキャストインテントには以下のようなものがあります。 この他にも多くのブロードキャストインテントが定義されています。 (http://developer.android.com/re
Broadcast intentの送受信の使い方です。 Broadcast intentとは、Implicit intent(暗黙的なintent)とほぼ同じものですが、1点だけ大きく異なるところがあります(Implicit intentについては「外部アプリから起動されるアプリを作る」を参照)。それは、Implicit intentが選択された1つのActivityしか受信できないのに対し、Broadcast intentは基本的に全Activityが受信できます。受信するかどうかIntent filterで設定するのは同じです。 ただし、基本的に全Activityと書いたのは、そうでないBroadcast intentもあるからです。Broadcast intentを投げる方法は2通りあり、1つはsendBroadcast()を使います。この場合、全Activityが一斉に(非同期に)
前回(端末に新規アプリがインストールされたらログを吐く)に引き続き、Serviceの利用方法とか、ほとんど覚えていないので、 Service の超簡単なサンプルを作成したのでメモを残す。 概要 ServiceをAIDLを使って、アプリから利用サンプル。 複数アプリから同じサービスを参照して遊びタイので、Implicit intents with startService are not safeって出ても気にしないでokなはず。 AndroidManifestにServiceを定義する際のリファレンスをすぐに忘れるので残す。 実装 GitHubにサンプルソースを置きました だいたい下記ファイルを眺めればわかるかと。 ItemListActivity.java CalculatorService.java ICalculatorService.aidl 備忘 僕はサンプル作成にAndroid
2011年03月17日 AndroidのBinderによるプロセス間のメソッド呼び出し(メモ) Androidのシステムでは同時にたくさんのプロセスでJava言語で書かれたプログラムがDalvikVMによって動いています。intentを発行して別のプロセスで処理を実行できることがAndroidでのプログラミングの大きな強みです。 このようなプロセスをまたがったメソッド呼び出しは下位レベルではBinderという技術が使われているのですが、私はいままでそれがぼんやりとしか理解できていませんでした。 ソースコードを無理やり追いかけたら、わかりかけてきたのでメモを残します。 Androidのアプリケーションプログラムから別のアプリケーションを起動するにはIntentを発行すればよいのですが、それには android.app.Activity#startActivity メソッドを使用します。 その
2011年03月22日 AndroidのBinderによるプロセス間のメソッド呼び出し(メモ2:AIDL) 今回はAIDLとは何かを調べてみました。前回のことがわかっているとAIDLの理解は簡単です。 前回のまとめ 前回は frameworks/base/core/java/android/app/ActivityManagerNative.java をみてみましたが、他にも同様な構成のものがいつくかあります。 $ cd frameworks/base/core $ find . -name "*Native.java" ./java/android/content/ContentProviderNative.java ./java/android/os/ServiceManagerNative.java ./java/android/database/BulkCursorNative.j
前書きAndroidではServiceを実装することでプロセス間で通信することが出来ます。 今回はMessengerを使ったServiceとActivityのデータの送受信方法について説明します。 Serviceとは?ドキュメントによるとこう説明されています。 サービスは、ユーザが異なるアプリケーションにいても作業を行うためにバックグラウンドで実行することができます。サービスを使って双方向のやり取りを行い、プロセス間通信を行うために、他のコンポーネントがサービスにバインドすることが許されています。サービスはデフォルトではホストのアプリケーションのメインスレッドで実行されます。言ってしまえば、「Intentからのみ呼び出せるライブラリ / プラグイン」です。 当然Intent Filterを適切に設定すればどんなアプリケーションからも呼び出せます。と言うか、ManifestにIntent F
特長 RFC 6455 (The WebSocket Protocol) に準拠している。 Java SE 1.5+, Android で動く。 全てのフレームタイプ (continuation/binary/text/close/ping/pong) をサポートしている。 分割されたフレームを送信するメソッドを提供している。 WebSocket が使用しているソケットを取得して設定できる。 Basic 認証のためのメソッドを提供している。 javax.net.SocketFactory インターフェースを利用するファクトリークラスを提供している。 WebSocket イベントをフックするためのリッチなリスナーインターフェースを提供している。 エラー発生時にきめ細かい制御ができるよう、きめ細かいエラーコードを定義している。 フレームの RSV1/RSV2/RSV3 ビット及びオペコードの検
AndroidでWebSocket通信するサンプルです。 使用したライブラリは TooTallNate/Java-WebSocket · GitHub です。 weberknecht - Java WebSocket Client Library - Google Project Hosting のほうが人気があるらしいですけど、Java-WebSocketのほうがライセンス緩かったので… WebSocketのサーバー側はテキトーに準備しておいてください。 自分は igrigorik/em-websocket · GitHub を使いました。 Android側は次のような感じになります。 public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く