問題タブ [aidl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android: onPause に相当するタスクまたはアプリケーション
私のアプリケーションは、リモート サービスを使用してオーディオを再生します。これは、オーディオの再生を所有するアクティビティがないようにするためです。ユーザーは、1 つのアクティビティからオーディオの再生をトリガーでき、アプリ内を移動するときにオーディオが再生され続けます。ただし、ユーザーがバックアウト、ディスプレイのロック、または [ホーム] をクリックしてアプリを「アンロード」したときに、オーディオの再生を一時停止または停止するようにサービスに指示したいと考えています。アプリが単一のアクティビティだったとき、私は onPause でこれを行っていました。だから、私は本質的にアプリケーション/タスクレベルで「onPause」を探していると思います。そのようなものは存在しますか?そうでない場合、ユーザーが完全に後退するか、ホームを押すことによってタスクが保留にされたことを通知する「ベストプラクティス」の方法は何ですか?
android - SDKサンプルコードを使用してコマンドラインからAIDLツールを使用するにはどうすればよいですか?
私の質問は、コマンドラインから(Windowsシステムで)aidl.exeを使用することに関するものです。この質問は、Eclipse、Netbeansなどとは何の関係もありません。
Android SDKには、次の3つのAIDL定義ファイルが含まれています。
IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl
次のディレクトリにあります。
C:\ android-sdk-windows \ platforms \ android-2.1 \ samples \ ApiDemos \ src \ com \ example \ android \ apis \ app
簡単にするために、aidl.exeを上記のディレクトリにコピーしました。次に、コンソールウィンドウから、次の2つのコマンドを使用して.javaファイルを生成することに成功しました。
C:\ Android-project \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl IRemoteServiceCallback.aidl C:\ Android-project \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl ISecondary.aidl
これらのコマンドを呼び出すと、それぞれファイルIRemoteServiceCallback.javaとISecondary.javaが生成されました。ここまでは順調ですね。
どちらの.aidlファイルも単純であることに注意してください。'import'ステートメントは含まれていません。
残りの.aidlファイルであるIRemoteService.aidlには、19行目に次のインポートステートメントが含まれています。
インポートcom.example.android.apis.app.IRemoteServiceCallback;
このファイルでAIDLツールを実行すると、問題が発生します。
これを行うと、次のエラーメッセージがコンソールウィンドウに出力されます。
IRemoteService.aidl:19:クラスcom.example.android.apis.app.IRemoteServiceCallbackのインポートが見つかりませんでした
AIDLツールは、実行されていたのと同じディレクトリでIRemoteServiceCallback.aidlファイルを見つけることができなかったようです。AIDLツールの「使用法」メッセージによると、この問題を解決するために明らかに使用できるコマンドがあります。
問題:エラーメッセージを回避するような方法で-Iを指定できず、AIDLツールで.aidlファイルから'import'ステートメントを使用して.javaファイルを生成できませんでした。(注:Windows環境変数'path'を現在のディレクトリに設定しました。)これが私が試したいくつかのバリエーションです:
簡単なものが欠けているに違いありません。驚いたことに、この質問のバリエーションがさまざまな場所に投稿されているのを見ましたが、AIDLコマンドラインの使用法に関する回答やドキュメント(aidl.exeの使用法情報を除く)はまだありません。誰かが私を手がかりにできますか?
ありがとう、マット
android - Android-アクティビティでサービスのメソッドを使用しますか?
私のアプリケーションでは、サービスに次の方法があります。
だから私の質問は、次のようなアクティビティでこのメソッドを使用できるようにするための最良かつ最も効果的な方法は何ですか?
AIDLを実行する必要がありますか、それとももっと簡単な方法がありますか?
android - アクティビティを開始するサービスがそれと通信するための最良の方法
ソケットをリッスンするサービスがあります。特定の入力を受け取るとき、それはアクティビティを作成することです。他の入力を受け取るとき、それはこの活動を殺すことです。AIDL( http://developer.android.com/guide/developing/tools/aidl.html )を介してサービスとアクティビティを通信させるのにしばらく苦労しましたが、これは効果的ではないようです。AIDLは、話し合うプロセスがサービスである場合にのみ効果的であり、アクティビティである場合には効果がないと思いますか?私は私の問題を解決する方法についてのいくつかの方向性や提案が大好きです。
乾杯、
java - Android-警告を引き起こすAIDLgenファイル?
AndroidプロジェクトでIPC用のaidファイルをいくつか作成しました。
それらはファイルをコンパイルして実行しますが、生成された.javaファイルでは、次のように未使用のインポートに関する警告が表示されます。
今、私はそれらが理由でそこにあると思います、そして生成されたファイルは変更されることになっていないので、抑制警告を追加することは良い考えではありませんか?
では、どうすれば警告を取り除くことができますか?それらを残すことができ、プロジェクトの実行に影響を与えないことはわかっていますが、可能な限りクリーンなプロジェクトが必要なので、このエラーを完全に取り除くことができれば、その方法を知りたいと思います。
ありがとう
android - サービスにバインドできません
次のように定義された aidl ファイルがあります。
サービスは次のとおりです。
サービスにバインドする必要があるアクティビティは次のとおりです。package com.erbedo.callalert;
onServiceConnected は呼び出されません。明らかな何かが欠けていますか?
android - AIDL: スタブ クラス メソッドが呼び出されない
AIDL を使用してアクティビティからサービスにオブジェクトを渡していますが、奇妙な動作が発生しています。私の理解では、AIDL の背後にあるアイデアは、.aidl ファイルにインターフェイスを作成することです。これにより、Android は動的に生成されたクラスに (部分的に) 実装します。Android は Stub と呼ばれる抽象クラスを作成します。これをインスタンス化し、.aidl インターフェイスで定義したメソッドの実装を追加する必要があります。すべてが整ったら、リモート サービスをインスタンス化し、.aidl インターフェイス ファイルで宣言された (およびスタブ クラスのインスタンス化で定義された) メソッドを呼び出すことができます。
という感じですが、実際に実装してみると、Stub クラスで宣言したメソッドの定義が実行されていないことに気付きました。代わりに、実行されているのは IBinder.transct() です
ここに私がやろうとしていることのスニペットがあります:
これは私のサービスに実装されています:
これは、サービスを使用して通信しようとするアクティビティ内にあります。
INetService.Stub で定義されている sendString などのメソッドは、呼び出されないように見えます。明らかに何かが欠けています。何かご意見は?
どうもありがとう!
イヴァ
android - 別のスレッドからのコールバックにより例外が発生する
シンプルなマルチプレイヤー ゲームを作成しようとしています。すべてのネットワーク通信を処理することになっている がありWorkerService
、このサービスとアクティビティ間のすべてのやり取りは AIDL で行われます。これは標準的なアプローチだと思います-双方向のやり取りを可能にするために、IWorkerCallback
インターフェイス(AIDLも)も使用します。
問題は、コールバックが UI スレッドでのみ実行できる UI の変更を行う必要があることです。私はHandler
(UI スレッドで) を作成しましたが、これは明らかな解決策であると信じています。しかし、驚くべきことに、それは機能していません。
インターフェイスのメソッドをLoungeActivity
呼び出します。私の対応するメソッドは、何らかの仕事をしてコールバックを行います - これはうまくいきます。次に、新しいスレッドを生成し、このスレッドからコールバックすると、不適切な例外がスローされます。startServer()
IWorker
WorkerService
WorkerService
Can't create handler inside thread that has not called Looper.prepare()
明確にするためのコードを次に示します。
startServer()
実装:
ServerThread
コード:
のすべてのメソッドはcallback
次のようになります。
Handler のhandleMessage()
メソッドでは単純なことを行ってswitch(msg.what)
おり、どの場合でも単純な UI の変更 (トーストの表示、テキストの変更など) があります。
この Exception がスローされる理由がわかりません.コードを に詰め込んRunnable
で呼び出すことで修正できましrunOnUiThread()
たが、それでも気になります. Handler は常にそれを作成したスレッドで実行されるべきではありませんか? それとも、私は何か間違ったことをしていますか?
android - アクティビティ全体でリモート インターフェイス (aidl) を渡す方法は?
サービスとリモート インターフェイスを使用してアプリケーションを開発しています。
アクティビティ全体でリモート インターフェイスの参照を渡すことについて質問があります。
最初のアクティビティでは、使用するインターフェイスへの参照を取得するために、サービスをアクティビティにバインドします
x は私のインターフェースへの参照です。ここで、別のアクティビティからこのインターフェイスにアクセスしたいと思います.2つの方法がありますが、どちらが「適切な」方法であるかわかりません:
- 新しいアクティビティを呼び出すときに意図的に x を渡す
this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE);
新しいアクティビティの onCreate() をやり直す
私に何をするようアドバイスしてくれますか?
android - Androidリモートサービスはサービスメソッドを呼び出さない
私はAndroidでGPS追跡ソフトウェアを開発しています。さまざまなアクティビティからサービスを制御するには、IPCが必要です。そこで、AIDLを使ってリモートサービスを開発することにしました。これは大きな問題ではありませんでしたが、今では常にインターフェイスのメソッドに実行されており、私のサービスクラスのメソッドには実行されていません。多分誰かが私を助けることができますか?
ここに私のAIDLファイルがあります:
そして、ここに私のサービスクラスの短いバージョンがあります:
クライアントから簡単にアクセスできるように、ServiceConnectionをセットアップするServiceManagerクラスを作成し、サービスメソッドを呼び出すことができます。これのための私のコードはここにあります:
start(trackId)などのアクティビティからメソッドを呼び出そうとしても、何も起こりません。バインディングはOKです。デバッグ時には、TrackingServiceクラスではなく、生成されたITrackingServiceRemote.javaファイルのstartTracking()に常に実行されます。問題はどこだ?何も悪いところは見つかりません。
前もって感謝します!
トビアス