- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在让 JmDNS 与我的 Android AVD 一起工作时遇到了一些困难。我创建了 3 个应用程序。一个注册 ServiceListener 并记录任何 Activity 的 Android 应用程序,一个与 android 应用程序执行相同操作的 Java 应用程序,以及另一个注册服务的 Java 应用程序。 Java 监听器应用程序将接收其他 Java 应用程序,但 android 应用程序不会。我也试过同时运行两个 AVD,看看它们是否会互相接收,但它们不会。我还应该提到我拥有 INTERNET 和 CHANGE_WIFI_MULSTICAST_STATE 启用权限。这是我的代码:
安卓应用:
public class BonjourActivity extends Activity {
// Multicast
private WifiManager wifi;
private MulticastLock lock;
private JmDNS jmdns;
private String type = "_im._tcp.local.";
private ServiceListener listener;
private ServiceInfo serviceInfo;
// On Create
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Multicast
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
lock = wifi.createMulticastLock("");
lock.setReferenceCounted(true);
lock.acquire();
// JmDNS
new AsyncTask<Object, Object, Object>(){
@Override
protected Object doInBackground(Object... params) {
// Create JmDNS
try {
jmdns = JmDNS.create();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Object result) {
// Add Listener
jmdns.addServiceListener(type, listener = new ServiceListener(){
@Override
public void serviceAdded(ServiceEvent ev) {
jmdns.requestServiceInfo(ev.getType(), ev.getName(), 1);
}
@Override
public void serviceRemoved(ServiceEvent ev) {
Log.d("Service", "Service Removed: " + ev.getName());
}
@Override
public void serviceResolved(ServiceEvent ev) {
Log.d("Service", "Service Resolved: " + ev.getInfo().getURL());
}
});
}
}.execute();
}
// On Destroy
public void onDestroy(){
// Release Lock
if (lock != null){
lock.release();
}
// Close JmDNS
if (jmdns != null){
jmdns.removeServiceListener(type, listener);
try {
jmdns.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.onDestroy();
}
}
Java 监听器应用程序:
public class Listener {
private static JmDNS jmdns;
private static String type = "_im._tcp.local.";
private static ServiceListener serviceListener;
private static ServiceInfo serviceInfo;
// Main
public static void main(String args[]){
try {
jmdns = JmDNS.create();
jmdns.addServiceListener(type, serviceListener = new ServiceListener(){
@Override
public void serviceAdded(ServiceEvent ev) {
System.out.println("Service Added: " + ev.getName());
jmdns.requestServiceInfo(ev.getType(), ev.getName(), 1);
}
@Override
public void serviceRemoved(ServiceEvent ev) {
System.out.println("Service Removed: " + ev.getName());
}
@Override
public void serviceResolved(ServiceEvent ev) {
System.out.println("Service Resolved: " + ev.getInfo().getURL());
}
});
System.out.println("Listener Added");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Java 发送器应用程序:
public class Sender {
private static JmDNS jmdns;
private static String type = "_im._tcp.local.";
private static ServiceListener serviceListener;
private static ServiceInfo serviceInfo;
// Main
public static void main(String args[]){
try {
jmdns = JmDNS.create();
serviceInfo = ServiceInfo.create(type, "Test IM Service", 55555, "Instant messaging test service");
jmdns.registerService(serviceInfo);
System.out.println("Sender: Service Created");
new Timer().schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Closing..");
jmdns.unregisterAllServices();
try {
jmdns.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
}, 10000);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
此外,当我尝试运行该应用程序时,LogCat 给我一些错误:
NetworkManagementSocketTagger setKernelCountSet(10009,0) 失败,errno -2
WifiStateMachine 错误!未处理的消息{ what=131157 when=-1ms }
可能有人知道为什么 android 应用程序无法获取其他应用程序生成的 JmDNS 服务吗?
最佳答案
请注意,模拟器中运行的虚拟设备与计算机不在同一网络中。服务发现可能不起作用。我的 jmdns 实现在模拟器中不起作用。在真实设备上试用。然后转到 http://home.heeere.com/tech-androidjmdns.html了解更多详情。
关于Android AVD 无法通知 JmDNS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899177/
我在我的 Ubuntu 中使用 android sdk 已经有一段时间了。最近,我将它升级到 Ubuntu 13.10。从那时起,每当我尝试启动 android 虚拟设备时,我都会收到此错误: Sta
当我转到项目的运行/调试配置时,我不断收到此错误。 如果我单击“确定”,错误会再次出现,并且会不断出现。我无能为力。 最佳答案 尝试以管理员身份运行Android Studio 关于android -
我在 StackOverflow 上搜索了这里,发现许多类似的问题有许多不同的答案,但没有一个对我有用。 因此,在我尝试使用 Google Play API 添加新的虚拟设备之前,我在最后几天很好地使
我在使用运行 4.0.3 操作系统的 HTC One V 开发我的应用程序时遇到了一个非常奇怪的问题。现在,该应用程序在我的和其他一些随机的 2.2、2.3 和 4+ 设备上运行良好,但在某些设备上,
在 AVD 管理器 gui 中,我看到了设备定义列表,这些使得使用给定设置配置设备变得容易。 当我使用 android list targets 时,我从设备定义中得到了一组不同的结果。 是否可以通过
出于某种原因,我无法创建 AVD。我经历了AVD Manager - Cannot Create Android Virtual Device并尝试了解决方案,我还在管理器中调整了不同的设置,包括将名
尝试将名为 AVD 的“2.3”添加到运行配置时出现上述错误。尽管如此,它的创建工作完美无缺。在多个目标上尝试过,见下文: 适用于: L 预览 4.4 不适用于: 2.3.3 4.1.2 4.3 使用
我在 Ubuntu 中使用 Android Studio,它不会创建 AVD。我的 ~/.android/avd 目录中没有创建任何内容。相反,在我的/root 目录中创建了一些东西。我想我不会关心,
我一直在使用 Android 11 AVD 毫无问题地开发和测试我的应用。现在我想测试 Android 12 并使用 Android 12 图像创建一个新的 AVD。但是当我启动 AVD 时,它会生成
无法在模拟器中启动 AVD。输出:sh:1:glxinfo:未找到无法启动'.../sdk/tools/qemu/linux-x86/qem u-system-i386':没有那个文件或目录 最佳答案
我正在运行最新的 beta Android Studio 4.2 Beta 3。每次我尝试单击运行按钮来启动我的 AVD 时,AVD 都不会启动并且会导致 Android Studio 崩溃。我没有安
当尝试使用 Android SDK AVD 管理器创建 AVD 时,出现“错误:空”。这种情况不断发生,因为 SDK 管理器正在寻找“位于\...(错误位置)的现有 Android 虚拟设备列表”。如
自从上次在我的 Mac OSX 上更新 Android Studio (0.8.14) 后,AVD Manager 无法再创建 AVD。 它只是在这个过程中崩溃了。有什么想法吗? 最佳答案 使用命令行
我正在尝试设置 Android 模拟器以使用 Cordova。我安装了我需要的一切,Android SDK 工具 (25.2.5)、Android SDK 构建工具 (25.*) 和 Android
我在 OS X Yosemite 上运行 Android Studio。我试图简单地从 Android Studio AVD Manager 中删除一个 AVD。每次我尝试删除它时,我都会收到消息“选
我正在使用带有 Android 4.4.2 API 级别 19 皮肤 WVGA800 的 Android 模拟器,当我按下 Left Ctrol+F11 时,AVD 配置从 Portait 更改为 L
我需要有关新虚拟设备的 AVD 设置方面的帮助。 我需要与新三星 Galaxy S3 大小相同的 AVD 的设置。 最佳答案 我创建了一个基于 GSM 竞技场状态 (http://www.gsmare
我已经创建了一个 Android 模拟器(Android 虚拟设备),但是我无法找到我在创建此模拟器时构建的 SD 卡。 如何找到 SD 卡及其内容以及如何将 APK 文件安装到 AVD? 最佳答案
将 SDK-Build-Tools 更新到 22.6 和 ADT-Plugin 后,无法通过任何模拟器创建 AVD 或启动任何应用程序这是在更新之前创建的。console 或 log-cat 中没有显
这个错误是我更新IDEA CE到132.1045版本时出现的。AVD 管理器对此 AVD 没有问题。我试图从头开始重新创建 AVD 但没有结果,同样的问题。在 SDK 管理器中没有更新。 如果单击“仍
我是一名优秀的程序员,十分优秀!