GoPro与Android dev一起使用官方WSDK运行时异常

时间:2017-08-04 14:46:12

标签: java android gopro

我想使用官方GoPro WSDK访问GoPro Hero 4 silver,但在尝试使用getMediaGateway()访问它时会遇到运行时异常。我是Android开发的新手,在GoPro开发人员文档中,我读到你必须在后台线程中执行此操作,但我无法让它工作。我必须用.postDelayed()来做。这是另一个故事,目前并不重要。我用官方的GoPro SDK文档中描述的方式做得很疯狂,但是我得到了我在代码片段后看到的异常。简而言之:摄像机录制视频(使用lopping模式),3秒后应该访问SD卡。我发现问题是这个cameraresult-call,但无法修复它,即使我用.isSuccess()测试它。

    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // [...]

    // App shutter-button onClickListener
    mBtnShutter.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(final View v) {
            doCameraTasks(3,v);
        }
    });
}

// Press shutter after n seconds and extract both video-parts
private void doCameraTasks(int seconds, final View v) {
    // On
    getActivity().startService(C2Service.newToggleShutterCommand(v.getContext(),
            mGoProCamera.getGuid()));

    v.postDelayed(new Runnable() {
        @Override
        public void run() {
            // Off after n seconds
            getActivity().startService(C2Service.newToggleShutterCommand(v.getContext(),
                    mGoProCamera.getGuid()));
       }
    },seconds*1000);

    v.postDelayed(new Runnable() {
        @Override
        public void run() {
            CameraCommandResult<MediaResponse<GpCameraMedia>> cameraresult = mGoProCamera.getMediaGateway().getMediaList();

            if(cameraresult.isSuccess()) {
                MediaResponse<GpCameraMedia> mediaResponse = cameraresult.getData();
                List<GpCameraMedia> myMediaList = mediaResponse.getMedia();
                String cardID = mediaResponse.getSdCardGuid();
                Log.d("sdcard_id",cardID);
            }
        }
    },(seconds+2)*1000);
}

例外:

com.gopro.wsdksample E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: com.gopro.wsdksample, PID: 26823
                                                                  android.os.NetworkOnMainThreadException
                                                                      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148)
                                                                      at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:249)
                                                                      at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
                                                                      at java.net.PlainSocketImpl.read(PlainSocketImpl.java:549)
                                                                      at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:42)
                                                                      at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:253)
                                                                      at com.android.okio.Okio$2.read(Okio.java:113)
                                                                      at com.android.okio.RealBufferedSource.indexOf(RealBufferedSource.java:147)
                                                                      at com.android.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:94)
                                                                      at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:175)
                                                                      at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:101)
                                                                      at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:616)
                                                                      at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:379)
                                                                      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
                                                                      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:491)
                                                                      at com.gopro.wsdk.domain.camera.SingleConnectionHttpClient.send(SingleConnectionHttpClient.java:60)
                                                                      at com.gopro.wsdk.domain.camera.network.wifi.GpControlHttpCommandSender.send(GpControlHttpCommandSender.java:81)
                                                                      at com.gopro.wsdk.domain.camera.operation.media.GetCameraMediaCommand.execute(GetCameraMediaCommand.java:64)
                                                                      at com.gopro.wsdk.domain.camera.network.wifi.GpControlHttpCommandSender.process(GpControlHttpCommandSender.java:76)
                                                                      at com.gopro.wsdk.domain.camera.sender.CommandSenderManager.process(CommandSenderManager.java:148)
                                                                      at com.gopro.wsdk.domain.camera.GoProCamera.process(GoProCamera.java:426)
                                                                      at com.gopro.wsdk.domain.camera.operation.media.GpMediaGateway.getMediaList(GpMediaGateway.java:85)
                                                                      at com.gopro.wsdksample.features.ControlFragment$3.run(ControlFragment.java:112)
                                                                      at android.os.Handler.handleCallback(Handler.java:739)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                      at android.os.Looper.loop(Looper.java:135)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5306)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at java.lang.reflect.Method.invoke(Method.java:372)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

0 个答案:

没有答案