Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查是否支持setOrientation()?_Android_Android Camera_Mediarecorder_Android Mediarecorder_Setorientation - Fatal编程技术网

Android 检查是否支持setOrientation()?

Android 检查是否支持setOrientation()?,android,android-camera,mediarecorder,android-mediarecorder,setorientation,Android,Android Camera,Mediarecorder,Android Mediarecorder,Setorientation,我正在开发一个录制视频的应用程序。它基本上是完整的,但我有一个奇怪的问题,三星Galaxy S1(澳大利亚型号)运行2.3.3(API 10) 当我尝试通过mMediaRecorder.setOrientionHint(90)设置方向时它引发异常: 05-28 10:46:53.628: E/AndroidRuntime(6373): java.lang.RuntimeException: setParameter failed. 以及: 05-28 10:46:53.593: E/Media

我正在开发一个录制视频的应用程序。它基本上是完整的,但我有一个奇怪的问题,三星Galaxy S1(澳大利亚型号)运行2.3.3(API 10)

当我尝试通过
mMediaRecorder.setOrientionHint(90)设置方向时它引发异常:

05-28 10:46:53.628: E/AndroidRuntime(6373): java.lang.RuntimeException: setParameter failed.
以及:

05-28 10:46:53.593: E/MediaRecorder(6373): setParameters(video-param-rotation-angle-degrees=90) failed: -2147483648
奇怪的是,其他运行3.2.2(API 10)的设备工作得非常好——只有这台三星galaxy s1似乎有一个不支持setOrientation()的定制操作系统

我目前正在使用一个
try{}catch(){}
绕过
setOrientation()
。这不是一种优雅的处理方式,对吗?是否最好先检查设备是否支持
setOrientation()
,然后再尝试设置?我找不到任何方法来检查此支持

我已经检查过()了,除了已经在使用的API级别9之外,找不到其他帮助。即,仅当API级别为9或更高时才尝试设置方向

以下是整个例外:

05-28 10:46:53.593: E/MediaRecorder(6373): setParameters(video-param-rotation-angle-degrees=90) failed: -2147483648
05-28 10:46:53.593: W/dalvikvm(6373): threadid=1: thread exiting with uncaught exception (group=0x40015578)
05-28 10:46:53.628: E/AndroidRuntime(6373): FATAL EXCEPTION: main
05-28 10:46:53.628: E/AndroidRuntime(6373): java.lang.RuntimeException: setParameter failed.
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.media.MediaRecorder.setParameter(Native Method)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.media.MediaRecorder.setOrientationHint(MediaRecorder.java:341)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at com.on3x.emergency.Recorder.prepareVideoRecorder(Recorder.java:223)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at com.on3x.emergency.Recorder.startRecording(Recorder.java:104)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at com.on3x.emergency.GUI.RecordActivity$1.onClick(RecordActivity.java:111)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.view.View.performClick(View.java:2538)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.view.View$PerformClick.run(View.java:9152)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.os.Handler.handleCallback(Handler.java:587)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.os.Looper.loop(Looper.java:123)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at android.app.ActivityThread.main(ActivityThread.java:3687)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at java.lang.reflect.Method.invokeNative(Native Method)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at java.lang.reflect.Method.invoke(Method.java:507)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-28 10:46:53.628: E/AndroidRuntime(6373):     at dalvik.system.NativeStart.main(Native Method)
这是实际设置的代码:

...
    if (android.os.Build.VERSION.SDK_INT>=9) {
        // attempt to rotate the video 90 degrees.
        try {
            mMediaRecorder.setOrientationHint(90);
            Utils.logLine("orientation rotated 90", this, Utils.LOG_TYPE_DEBUG);
        } catch (Exception e) {
            Utils.logLine("error trying setOrientationHint"+ e.getMessage(), this, Utils.LOG_TYPE_ERROR, e);
        }           
    } else {
        Utils.logLine("orientation set skipped ", this, Utils.LOG_TYPE_DEBUG);
    }    
...

如果您确信只有有限数量的设备使用此命令进行了自定义,则可以通过进行抢先检查。否则,
try
catch
block是处理它的唯一方法。

Hmm是的,检查设备可能是我目前唯一的选择。然后,我可以修改try-catch,通过将其详细信息更新到服务器来提醒我任何无法使用
setOrientation()
的设备,然后我还可以将其添加到If语句中,检查设备类型。。。我得调查一下