问题标签 [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 的任务或应用程序
我的应用程序使用远程服务来播放音频。我这样做是为了让没有任何活动拥有音频的播放 - 用户可以触发一些音频从一个活动中播放,并且当他们在应用程序中导航时,音频将继续播放。但是,我确实想告诉服务在用户“卸载”应用程序时暂停或停止播放音频,方法是退出、锁定显示或点击主页。当应用程序是单个活动时,我在 onPause 中执行此操作。所以,我想我本质上是在应用程序/任务级别寻找“onPause”。这样的事情存在吗?如果不是,那么获得通知任务已被用户搁置的“最佳实践”方式是完全退出还是点击主页?
android - 如何使用 SDK 示例代码从命令行使用 AIDL 工具?
我的问题涉及从命令行使用aidl.exe(在Windows系统上)。这个问题与Eclipse、Netbeans等无关。
Android SDK 包含以下三个 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复制到上面的目录中。然后,在控制台窗口中,我成功地使用了以下两个命令来生成 .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 文件都很简单;它们不包括“导入”语句。
剩余的 .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 环境变量“路径”设置为当前目录。)以下是我尝试过的一些变体:
我一定错过了一些简单的东西。令人惊讶的是,即使我在不同的地方看到了这个问题的变体,我还没有看到关于 AIDL 命令行使用的答案或任何文档(除了aidl.exe USAGE 信息)。有人可以给我线索吗?
谢谢,马特
android - Android - 在活动中使用服务中的方法?
我在我的应用程序中的服务中有以下方法:
所以我的问题是什么是能够在 Activity 中使用此方法的最佳和最有效的方法,如下所示
我必须做 AIDL 还是有更简单的方法?
android - 启动 Activity 的 Service 与之通信的最佳方式
我有一个监听套接字的服务。当接收到某些输入时,它是创建一个活动。当接收到其他输入时,就是杀死这个activity。我一直在努力让服务通过 AIDL(http://developer.android.com/guide/developing/tools/aidl.html)与活动通信,但这似乎无效。我认为 AIDL 仅在要与之交谈的进程是服务而不是活动时才有效?我会喜欢一些关于如何解决我的问题的方向或建议。
干杯,
java - Android - AIDL 生成文件导致警告?
我在我的 Android 项目中为 IPC 创建了一些aidl 文件。
他们编译并运行文件,但是在生成的 .java 文件中,我收到未使用导入的警告,如下所示:
现在我认为它们存在是有原因的,并且由于不应该修改生成的文件,因此添加抑制警告不是一个好主意?
那么如何摆脱这些警告呢?我知道它们可以留下,它不会影响项目的运行,但我想要一个尽可能干净的项目,所以如果它完全有可能消除这个错误,我想知道该怎么做。
谢谢
android - 无法绑定到服务
我有一个定义如下的aidl文件:
服务是:
而必须绑定到服务的Activity是:package com.erbedo.callalert;
未调用 onServiceConnected。我错过了一些明显的东西吗?
android - AIDL:未调用存根类方法
我正在使用 AIDL 将对象从 Activity 传递给 Service,并且出现了一些奇怪的行为。据我了解,AIDL 背后的想法是在 .aidl 文件中创建一个接口,然后 android 将在动态生成的类中(部分)实现该接口。Android 将创建一个名为 Stub 的抽象类,然后您需要实例化并添加您在 .aidl 接口中定义的方法的实现。一旦所有这些都准备就绪,就可以实例化远程服务,并且可以调用在 .aidl 接口文件中声明的方法(并在您的 Stub 类的实例中定义)。
这就是我对这种机制如何工作的印象,但是当我尝试实现它时,我注意到我在 Stub 类中声明的方法的定义没有运行;相反,正在运行的是 IBinder.transct()
这是我正在尝试做的一个片段:
这是在我的服务中实现的:
这是在我的 Activity 中,它尝试使用该服务并与之对话:
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
看起来都是这样的:
在处理程序的handleMessage()
方法中,我正在做一个简单的switch(msg.what)
,并且在每种情况下都有一个简单的 UI 修改(显示 Toast,更改文本等)。
我不知道为什么会抛出这个异常。我已经设法通过将代码打包到 aRunnable
并调用来修复它,runOnUiThread()
但它仍然让我很好奇 - 处理程序不应该总是在创建它的线程中运行吗?或者也许我做错了什么?
android - 如何在整个活动中传递远程接口(aidl)?
我正在使用服务和远程接口开发应用程序。
我有一个关于在整个活动中传递我的远程接口的引用的问题。
在我的第一个活动中,我将我的服务与我的活动绑定,以便获得对我使用的界面的引用
x 是对我的界面的引用。现在我想从另一个活动中访问这个界面,我看到了两种方法,但我不知道哪一种是“正确”的方法:
- 当我调用新 Activity 时以我的意图传递 x
this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE);
在我的新活动的 onCreate() 中重做
你会建议我做什么?
android - Android远程服务不调用服务方法
我正在android上开发一个GPS跟踪软件。我需要 IPC 来控制来自不同活动的服务。所以我决定用 AIDL 开发一个远程服务。这不是一个大问题,但现在它总是运行到接口的方法中,而不是我的服务类的方法中。也许有人可以帮助我?
这是我的 AIDL 文件:
这里是我的服务类的简短版本:
为了更方便地从客户端访问,我编写了一个 ServiceManager 类,它设置了 ServiceConnection,您可以调用服务方法。这是我的代码:
如果我现在尝试从一个活动中调用一个方法,例如 start(trackId) 什么都不会发生。绑定没问题。调试时,它总是运行到生成的 ITrackingServiceRemote.java 文件中的 startTracking() 中,而不是我的 TrackingService 类中。问题出在哪里?我找不到任何问题。
提前致谢!
托拜厄斯