系统内部错误 Android,在Android中使用网络服务发现的内部错误
发布日期:2021-06-24 13:17:47 浏览次数:2 分类:技术文章

本文共 4389 字,大约阅读时间需要 14 分钟。

在使用示例和

tutorial on the developer page首次实施NSDManager期间,应用程序成功启动了发现并找到了设备.

然而现在它似乎被打破了……

程序启动后,在初始化后,代码进入以下方法并成功运行:

public void discoverServices() {

Log.d(TAG,"Initializing discovery on NSD");

mNsdManager.discoverServices(

SERVICE_TYPE,NsdManager.PROTOCOL_DNS_SD,mDiscoveryListener);

}

收到日志消息.经过一段时间(约5分钟),这是从程序输出:

05-21 11:08:32.518: E/NsdCamera(12236): Discovery Failed: Error code:0

05-21 11:08:32.518: W/dalvikvm(12236): threadid=12: thread exiting with uncaught exception (group=0x40c9c930)

05-21 11:08:32.518: E/AndroidRuntime(12236): FATAL EXCEPTION: NsdManager

05-21 11:08:32.518: E/AndroidRuntime(12236): java.lang.NullPointerException

05-21 11:08:32.518: E/AndroidRuntime(12236): at android.net.nsd.NsdManager$ServiceHandler.handleMessage(NsdManager.java:338)

05-21 11:08:32.518: E/AndroidRuntime(12236): at android.os.Handler.dispatchMessage(Handler.java:99)

05-21 11:08:32.518: E/AndroidRuntime(12236): at android.os.Looper.loop(Looper.java:137)

05-21 11:08:32.518: E/AndroidRuntime(12236): at android.os.HandlerThread.run(HandlerThread.java:60)

还来自服务:

05-21 11:50:49.108: E/NativeDaemonConnector.ResponseQueue(8858): Timeout waiting for response

05-21 11:50:49.108: E/mDnsConnector(8858): timed-out waiting for response to 10 mdnssd discover 6 _http._tcp.

05-21 11:50:49.108: E/NsdService(8858): Failed to discoverServices com.android.server.NativeDaemonConnector$NativeDaemonFailureException: command '10 mdnssd discover 6 _http._tcp.' Failed with 'null'

错误代码“0”在NSDManager class中描述为内部错误.

我做的主要更新是访问名为NsdCamera的helper类中的上下文.

这里有一些可能是邪恶的代码片段:

助手级构造函数:

public NsdCamera(CameraChooseActivity context) {

mContext = context;

updateUI = new UpdateUI();

mNsdManager = (NsdManager) context.getSystemService(Context.NSD_SERVICE);

mServiceName = new Vector();

Helper级NSD初始化:

public void initializeNsd() {

initializeDiscoveryListener();

}

public void initializeDiscoveryListener() {

mDiscoveryListener = new NsdManager.DiscoveryListener() {

@Override

public void onDiscoveryStarted(String regType) {

Log.d(TAG,"Service discovery started");

}

/**

* A name check to see if the DNS discovery was correct. Checks if it contains

* AXIS and has the desired MAC address-space

* @param hostname,the inputted hostname from the discovery cycle

* @return true if it's an Axis camera.

*/

public boolean nameCheck(String hostname){

return (hostname.contains("AXIS") && hostname.contains("00408C"));

}

@Override

public void onServiceFound(NsdServiceInfo service) {

Log.d(TAG,"Service discovery success: " + service.getServiceName());

if (!service.getServiceType().equals(SERVICE_TYPE)) {

Log.d(TAG,"Unknown Service Type: " + service.getServiceType());

} else if (nameCheck(service.getServiceName())){

mServiceName.add(service);

// updateUI.execute(new BundleUI(mContext,service,null));

}

}

@Override

public void onServiceLost(NsdServiceInfo service) {

Log.e(TAG,"service lost" + service);

if(mServiceName.remove(service)){

//TODO

Log.e(TAG,"remove the view,service is lost");

}

}

@Override

public void onDiscoveryStopped(String serviceType) {

Log.i(TAG,"Discovery stopped: " + serviceType);

//Necessary??

mServiceName.clear();

}

@Override

public void onStartDiscoveryFailed(String serviceType,int errorCode) {

Log.e(TAG,"Discovery Failed: Error code:" + errorCode);

mNsdManager.stopServiceDiscovery(this);

}

@Override

public void onStopDiscoveryFailed(String serviceType,"Discovery Failed: Error code:" + errorCode);

mNsdManager.stopServiceDiscovery(this);

}

};

}

CameraChooseActivity – > onCreate正在调用helper-class

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_camerachoose);

//Setup the animation for the text in the Relativelayout

mDescription = (TextSwitcher) findViewById(R.id.camera_add);

mDescription.setFactory(this);

mDescription.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));

mDescription.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));

mDescription.setText(getText(R.string.camera_add));

//Building alert dialog

mBuilder = new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_DARK);

mBuilder.setMessage(R.string.dialog_about).setTitle(R.string.action_about);

mBuilder.setIcon(android.R.drawable.ic_dialog_info);

mLayout = (RelativeLayout) findViewById(R.id.layout_camerachoose);

//Initialize the NSD

mNSDHelper = new NsdCamera(this);

mNSDHelper.initializeNsd();

转载地址:https://blog.csdn.net/weixin_33073525/article/details/117519015 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android下载文件地址,安卓迅雷下载的文件在哪里迅雷下载文件存放位置-独木成林...
下一篇:汽车鸿蒙音响怎么调,西玛怎样调车载音响均衡器 西玛调试车载音响步骤

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月15日 05时18分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章