2013-01-21 40 views
1

我剛開始學習android編程,而且我也沒有那種java經驗。 我想在android中製作一個應用程序,從覆盆子pi流mjpeg(使用mjpeg流光)。地址模式是:Android,mjpeg,http證書

http://ip_address:8080/?action=stream 

覆盆子pi部分完成。問題是在Android的一部分..我試圖從這一個代碼: Android and MJPEG

然後我有一個黑色的屏幕,它崩潰..從該頁上的評論,我發現我需要得到http證書或其他..

我嘗試了幾種解決方案來信任所有證書,但我得到了一些語法錯誤。例如,從這個頁面:

super(null, null, null, null, null, (X509HostnameVerifier)null); 

的錯誤是::

The constructor SSLSocketFactory(null, null, null, null, null, X509HostnameVerifier) is undefined 

而且我不https://stackoverflow.com/a/12742591

,它說(APPX線83)我上了線的錯誤t知道如何解決這個問題,因爲我是這個主題的新手。Eclipse建議將(X509HostnameVerifier)更改爲(HostNameResolver)。但是後來我對mjpeg部分中的編輯感到困惑。

我想我應該改變(APPX 29行):

DefaultHttpClient httpclient = new DefaultHttpClient(); 

DefaultHttpClient httpclient = HttpsClientBuilder.getBelieverHttpsClient(); 

它仍然崩潰。 我沒有更改上述頁面中的任何代碼,只是提到了2行。 有什麼建議嗎?

我只想信任所有證書,因爲當覆盆子pi重新啓動時,有時會更改ip地址。如果IP地址發生變化,我必須獲得新的證書嗎?

編輯

我忘了補充使用許可互聯網..這是新的logcat:

01-21 18:02:48.825: W/dalvikvm(27150): threadid=1: thread exiting with uncaught exception (group=0x40c4d1f8) 
01-21 18:02:48.830: E/AndroidRuntime(27150): FATAL EXCEPTION: main 
01-21 18:02:48.830: E/AndroidRuntime(27150): java.lang.RuntimeException: Unable to start activity : android.os.NetworkOnMainThreadException 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1973) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1999) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.os.Looper.loop(Looper.java:137) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread.main(ActivityThread.java:4513) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at java.lang.reflect.Method.invoke(Method.java:511) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:974) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:741) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at dalvik.system.NativeStart.main(Native Method) 
01-21 18:02:48.830: E/AndroidRuntime(27150): Caused by: android.os.NetworkOnMainThreadException 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at libcore.io.IoBridge.connectErrno(IoBridge.java:138) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at libcore.io.IoBridge.connect(IoBridge.java:112) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at java.net.Socket.connect(Socket.java:842) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at com.example.testviewer.MjpegInputStream.read(MjpegInputStream.java:31) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at com.example.testviewer.MjpegSample.onCreate(MjpegSample.java:40) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.Activity.performCreate(Activity.java:4465) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
01-21 18:02:48.830: E/AndroidRuntime(27150): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
01-21 18:02:48.830: E/AndroidRuntime(27150): ... 11 more 
01-21 18:02:57.795: I/Process(27150): Sending signal. PID: 27150 SIG: 9 
+2

嗨,請你能從logcat發佈異常日誌。 – conor

回答

0

我沒有有關HTTP證書的任何想法,但你的日誌顯示由於Caused by: android.os.NetworkOnMainThreadException,您的應用程序崩潰。這意味着您正在應用程序主線程上運行網絡操作,該線程保留用於處理UI交互。

將您的網絡呼叫轉移到另一個線程或使用AsyncTask類在後臺運行網絡呼叫以超過此異常。