問題タブ [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.

0 投票する
1 に答える
1066 参照

android - AIDL の Android インポート非組み込み型

AIDL インターフェースに非組み込み型をインポートするために、何か特別なことをしなければなりませんか? 具体的には MediaPlayer です。インポートしようとすると、「クラス android.media.MediaPlayer のインポートが見つかりませんでした」というコンパイル エラーが発生します。

0 投票する
3 に答える
1639 参照

aidl - Eclipse で AIDL ファイルを使用する方法

APIを使用するサンプルアプリであるアプリをコンパイルしています。API には、インターフェイス ファイル (Java ファイル) と aidl ファイルが含まれています。現在、インターフェイス ファイルの 1 つに問題があり、プロジェクトに存在するこれらの aidl ファイルの 1 つを認識できません。API全体をビルドパスにリンクしました。誰にもアイデアはありますか??

0 投票する
2 に答える
8170 参照

android - Eclipse で AIDL ファイルを作成する

簡単な質問です...Eclipse を使用して Android プロジェクトで AIDL ファイルを作成するにはどうすればよいですか? たとえば、 を選択しようとするとFile -> New -> Other...、ADT が AIDL を作成するオプションがありません。AIDL は多かれ少なかれインターフェイスですが、インターフェイス (クラス) を作成すると、ファイルは .java 拡張子で生成されます。Eclipse では、単純にクラスをリファクタリングして .aidl 拡張子を付けることはできません。

些細なタスクのために ADT に頼りすぎているのかもしれませんが、AIDL ファイルを作成する簡単な方法がないことに驚いています。もちろん、新しいファイルを作成して独自の拡張子を付けることもできますが、その場合、AIDL ファイルには自動構文強調表示がありません。

0 投票する
2 に答える
1522 参照

android - aidl を介してビュー インスタンスを渡す方法

statusbarService.java から通知の展開されたビューを取得し、それを aidl サービスを介して別のアプリケーションに渡そうとしています。

この「拡張された」ビュー インスタンスをサービスを介して保存し、aidl を介してサービスにバインドするすべてのユーザーに渡したいと考えています。

  • サービスクラスを書きました。しかし、このビューをサービス インスタンスに渡す方法がわかりません。サービスにバインドするには、それがアクティビティまたはサービスである必要があります。StatusBarService.java は両方のどちらでもありません。したがって、このビュー インスタンスをサービスに渡す方法がわかりません。

  • 何らかの形でビュー インスタンスがサービスに渡されたと仮定すると、ビュー インスタンスをサービスにバインドするすべてのユーザーに aidl 経由で渡す必要があります。したがって、ビューをメンバーとして取り、パーセル可能なクラスのインスタンスを返すパーセルバール クラスを作成する必要があることはわかっています。

  • パーセル経由でビュー インスタンスを記述する方法がわかりません。助言がありますか?バイト配列をいじる何かがあると思います。ビューインスタンスを変換してバイト配列として書き込む方法を知っている人はいますか?

0 投票する
1 に答える
2989 参照

android - Android AIDL-サンプルのクライアントとサーバーが必要(2つの異なるアプリ)

クライアントとリモートサーバーの2つの異なるアプリがあり、AIDLを使用しようとしています。サーバークラスをインポートすることでクライアントをコンパイルできましたが、クライアントのbindServiceがfalseを返します(getContenx()。bindService()を使用しても)。com.xyz.myRemoteServiceClassName.class.getName()を使用しようとすると、つまりクライアントのonCreateメソッドのリモートサービスの名前である場合、クライアントはjava.lang.NoClassDefFoundError例外をスローします。また、私のクライアントには現在AIDLファイルがありませんが、すべてのインポートで問題なくコンパイルされます。

サーバー内のAIDLファイルを「そのまま」クライアントに追加すると、クライアントはAIDLファイル内のパーセル可能なオブジェクトについて不平を言ってコンパイルしません。オブジェクトを追加しても、文句を言います。クライアントのJavaビルドパスにサーバープロジェクトを含めました。

サンプルのクライアントとサーバー(2つの異なるアプリ)のコードが機能している人はいますか?もしそうなら、クライアントサーバーアプリが機能していることを確認するために使用できる(できればEclipseプロジェクト)を指摘していただけますか?

期待して、ありがとう

ラヴィ

-ソースコードを削除しました。

0 投票する
1 に答える
229 参照

android - Android アプリケーションで実行されている Local Service とやり取りするにはどうすればよいですか

ローカル サービスを作成しました。そこで更新されるデータにアクセスするにはどうすればよいですか、またはローカル サービスと通信するにはどうすればよいですか?

0 投票する
1 に答える
2334 参照

android - AIDL-動的インテントでBindServiceを呼び出すと、nullバインダーが返されます

作成した一連のアプリケーションがあります。これらのアプリケーションの1つは、基本的に「ホーム画面」であるアクティビティであり、他のアプリケーションにはすべて、私が作成した一連のサービスが含まれています。

メインアプリケーションのアクティビティには、電話にインストールされている作成したカスタムサービスのクラス名とパッケージ名のリストを表示するために使用しているArrayAdapterを使用するListViewがあります。表示されている各サービスは異なるアプリケーションでホストされていますが、これらのサービスはすべて、私が作成したものと同じ単純なAIDLインターフェイスを実装しています。

メインアプリケーションには、次のようなバインダーとサービス接続があります。

リストからアイテムを選択したら、その選択したサービスにバインドしたいと思います。リスト内のアイテムを選択するためのコードは次のようになります。ここで、MyServiceオブジェクトは選択されたサービスアイテムを表します。

上記のコードでは、インテントは選択されたアイテムが保持するクラス名から形成されます。たとえば、クラス名は「com.example.exWidgetService.ExampleService」のようになります。このサービスは、そのアプリケーションのマニフェストファイルで次のように定義されます。

ExampleApplicationは、サービスをホストするために作成したアプリケーションであり、HomeApplicationは、実際のAIDLファイルが定義されているメインメニューアプリケーションです。

これが私の問題です。BindService()呼び出しを行うと、呼び出しは成功し、サービスがバインドされたというtrueが返されます。ただし、_serviceオブジェクトは常にNULLです。したがって、サービスが正常にバインドされた(または返された)場合でも、バインダーがnullであるため、サービスメソッドを実行できません。DDMSは何も役に立たないようで、BindService()呼び出し中に問題がログに記録されていないようです。

同じAIDLサービスを実装する複数のアプリケーションがあるのは問題ですか?そうでない場合、実行時に特定のサービス実装を動的に呼び出す適切な方法はありますか?

0 投票する
2 に答える
1708 参照

android - 1つのサービスが2つのアクティビティと別のサービスと通信している

だから、これが私のシナリオです:私は2つのアクティビティと1つのサービスを持っています-> 3つすべて(クラス)は別のサービスからの戻り型の値を必要とします(したがって、合計2つのアクティビティ、アプリケーションで2つのサービス)。

すなわち:アクティビティA、開始->アクティビティBとサービスI。

アクティビティB、開始->サービスII。

その後、アクティビティA、B、およびサービスIIはサービスIと通信する必要があります。サービスIは常に遅れて実行されており、一度開始すると停止することはありません。

それを行う私のアプローチは次のとおりでした:

  1. 4つの通信クラス間のインターフェースを宣言する3つの.aidlファイルを記述します。

  2. アクティビティAを作成してから、サービスI、アクティビティBを作成し、アクティビティBからサービスIIを作成します。

  3. サービスとして、いつでも3つのクラスと通信するためのonBind()メソッドを1つだけ持つことができます。私が行っているのは、setType()プロパティを使用して異なる値を割り当てることにより、3つのクラスからのすべてのインテントを区別することです。

  4. initService()を使用して通信を行う必要がある場合、2つのクラスの間に接続が構築され、その後すぐにreleaseService()を使用して解放されます。

  5. サービスIでは、onBind()メソッドは、最初にgetType()プロパティを使用して、インテントが3つのクラスのどれから来ているかを確認し、それぞれのIBinderタイプを返す必要があります。

ここで、私の問題はステップ5にあります。この場合、onBind()メソッドは、すべてのインテントのgetType()をチェックして、それぞれの戻り型を指定する操作を実行できません。サービスIのonBinder()メソッドのコードは次のとおりです。

エラー:LogCatに表示されているように:java.lang.NullPointerException

3つのクラスすべて(アクティビティA、B、サービスII)から-try-catchブロック内の関数の1つを呼び出しているときはいつでも。

誰かが私がどこで間違っているのか教えてもらえますか?

-Kishore Debnath、(3年生、CSE学生)。

0 投票する
2 に答える
1708 参照

android - メッセンジャー(AIDLの軽量代替品)をアプリケーション間の通信に使用できますか?

簡単な質問:Androidドキュメントには、 MessengerがIPC(プロセス間通信)のAIDLの代替手段であることが非常に明確に記載されています。ただし、これが異なるアプリケーションで実行されているプロセスに拡張されるのか、それとも1つのアプリ内で実行されるプロセスに拡張されるのかを明示的に言うことはありません。前者を強く疑っていますが、確認したかったのです。

ありがとう!1月