录制视频显示的视频角度和拍摄角度保持一致
生活随笔
收集整理的這篇文章主要介紹了
录制视频显示的视频角度和拍摄角度保持一致
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
需求:橫屏拍攝的時(shí)候橫屏顯示,豎屏拍攝的時(shí)候豎屏顯示
思路:1、錄制視頻界面布局不隨橫豎屏切換而變化。
2、橫豎屏切換布局不變化的話,錄制的視頻的方向也就固定了。
解決:1、錄制視頻界面布局不隨橫豎屏變化而變化的話,可以直接設(shè)定界面的方向固定為豎直方向。
2、監(jiān)聽(tīng)手機(jī)旋轉(zhuǎn)狀態(tài),根據(jù)旋轉(zhuǎn)角度來(lái)修改錄制視頻的方向。
具體代碼:
class MyOrientationEventListener extends OrientationEventListener {private static final int SENSOR_ANGLE = 25;public MyOrientationEventListener(Context context) {super(context);}@Overridepublic void onOrientationChanged(int orientation) {Log.d("ORIENTATIONA", "onOrientationChanged orientation=" + orientation);if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {return; //手機(jī)平放時(shí),檢測(cè)不到有效的角度}// 豎屏:0、180、360 // 橫屏:270、90//下面是手機(jī)旋轉(zhuǎn)準(zhǔn)確角度與四個(gè)方向角度(0 90 180 270)的轉(zhuǎn)換if (orientation > 360 - SENSOR_ANGLE || orientation < SENSOR_ANGLE) {photoOrientation = 0;} else if (orientation > 90 - SENSOR_ANGLE && orientation < 90 + SENSOR_ANGLE) {photoOrientation = 90;} else if (orientation > 180 - SENSOR_ANGLE && orientation < 180 + SENSOR_ANGLE) {photoOrientation = 180;} else if (orientation > 270 - SENSOR_ANGLE && orientation < 270 + SENSOR_ANGLE) {photoOrientation = 270;} else {return;}}}判斷手機(jī)是否支持重力感應(yīng),如果不支持,則設(shè)置不可用
listener = new MyOrientationEventListener(this);if (listener.canDetectOrientation()) {listener.enable();}else {listener.disable();}然后在設(shè)置錄制視頻方向前獲取角度,根據(jù)角度設(shè)置錄制視頻方向
//手機(jī)豎直方向if (MediaRecorderActivity.getPhotoOrientation() == 0 ||MediaRecorderActivity.getPhotoOrientation() == 180) {mMediaRecorder.setOrientationHint(or);}//手機(jī)后置攝像頭朝左if (MediaRecorderActivity.getPhotoOrientation() == 90){mMediaRecorder.setOrientationHint(180);} public static int getPhotoOrientation(){return photoOrientation;}這篇博客主要是提供一個(gè)思路,具體需求具體處理。
總結(jié)
以上是生活随笔為你收集整理的录制视频显示的视频角度和拍摄角度保持一致的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【bug记录】getDeviceId:
- 下一篇: 记一次热更新上传补丁包失败问题