Android, mjpeg, http сертификаты

Я только начинаю изучать программирование для Android, и у меня нет такого опыта в Java. Я пытаюсь создать приложение в Android, которое транслирует mjpeg из raspberry pi (используя mjpeg-streamer). Шаблон адреса:

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

Часть raspberry pi закончена. Проблема в части Android. Я попробовал код из этого: Android и MJPEG

а потом у меня появился черный экран, и он вылетел... из комментариев на этой странице я обнаружил, что мне нужно получить http-сертификаты или что-то в этом роде..

Я попробовал несколько решений, чтобы доверять всем сертификатам, но получил несколько синтаксических ошибок. Например, с этой страницы: https://stackoverflow.com/a/12742591

я получил ошибку в строке, где написано (строка 83):

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

Ошибка:

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

И я не знаю, как это исправить, так как я новичок в этой теме. Eclipse предлагает изменить (X509HostnameVerifier) ​​на (HostNameResolver). Но потом я запутался, где редактировать в части mjpeg.

Я думаю, что я должен изменить (строка приложения 29):

DefaultHttpClient httpclient = new DefaultHttpClient();  

to

DefaultHttpClient httpclient = HttpsClientBuilder.getBelieverHttpsClient(); 

Все равно крашится. Я не изменил код со страниц выше, за исключением упомянутых двух строк. Любое предложение?

Я просто хочу доверять всем сертификатам, так как при перезапуске raspberry pi иногда меняется IP-адрес. Если IP-адрес изменится, я должен получить новые сертификаты, верно?

Изменить

Я забыл добавить разрешение на использование для Интернета. Это новый логарифм:

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

person lukrina    schedule 21.01.2013    source источник
comment
Привет, не могли бы вы опубликовать журнал исключений из logcat, пожалуйста.   -  person jim    schedule 21.01.2013


Ответы (1)


Я понятия не имею о http-сертификатах, но ваш журнал показывает, что ваше приложение дает сбой из-за Caused by: android.os.NetworkOnMainThreadException . Это означает, что вы выполняете свои сетевые операции в основном потоке приложения, который зарезервирован для обработки взаимодействий с пользовательским интерфейсом.

Переместите сетевой вызов в другой поток или используйте класс AsyncTask для запуска сети. вызовы в фоновом режиме, чтобы обойти это исключение.

person Supreethks    schedule 22.01.2013