cwac-camera "... поддерживается только в альбомной ориентации" исключение

Я пытаюсь записать видео, используя библиотеку Android cwac-camera. Я знаю, что библиотека поддерживает запись только в альбомной ориентации, но я не могу заставить ее перестать бросать UnsupportedOperationException: Video recording supported only in landscape, Я пытался использовать CameraView lockToLandscape() метод и принудительной ориентации экрана вручную с помощью андроидов setDisplayOrientation (как в коде, так и в конфигурации XML), но независимо от CameraInfo говорит мне, что ориентация 90, И CameraView's getDisplayOrientation() возвращается -1, Вот моя активность и фрагмент:

Есть некоторая странность в результате нахождения внутри плагина Cordova (я не могу использовать R).

public class RecordActivity extends Activity implements CameraHostProvider {

    public static final String TAG = "ApparatusRecordActivity";
    private VideoRecordingFragment current=null;
    private boolean recording_state = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //setContentView(R.layout.activity_main);
    String package_name = getApplication().getPackageName();
    int layoutid = getApplication().getResources().getIdentifier("apparatus_activity_main", "layout", package_name);
    int containerid = getApplication().getResources().getIdentifier("container", "id", package_name);
    Log.d(TAG,"layout id: " + layoutid);
    Log.d(TAG,"container id: " + containerid);

    setContentView(layoutid);

    current = new VideoRecordingFragment();

    getFragmentManager().beginTransaction().add(containerid, current, "video_camera_fragment").commit();
    SimpleCameraHost host = getCameraHost();
    current.setHost(host);
    Camera.CameraInfo info = new Camera.CameraInfo();
    Camera.getCameraInfo(host.getCameraId(),info);

    Log.d(TAG,"Orientation rotation: " + info.orientation);

    }

    @Override
    public SimpleCameraHost getCameraHost() {
    return (new SimpleCameraHost.Builder(this)
        .recordingHint(CameraHost.RecordingHint.VIDEO_ONLY)
        //.useFrontFacingCamera(true)
        .videoDirectory(new File("/sdcard"))
        .build());
    }

    public void record(View v) {
    try {
        if (recording_state == false) {
        recording_state = true;
        Log.d(TAG,"Start recording");
        current.record();
        current.getButton().setText("Stop");
        } else {
        recording_state = false;
        Log.d(TAG,"Stop recording");
        current.stopRecording();
        current.getButton().setText("Record");
        }
    } catch (Exception e) {
        // Print stack trace and try again.
        Log.e(TAG,Log.getStackTraceString(e));
    }
    }

}

А вот фрагмент VideoRecordingFragment, который он вызывает:

public class VideoRecordingFragment extends CameraFragment {

    public static final String TAG = "ApparatusVideoRecordingFragment";
    public String package_name;
    public int camera_layout_id;
    public int camera_component_id;
    public CameraView camera_view;
    public View content;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    package_name = getActivity().getApplication().getPackageName();
    camera_layout_id = getActivity().getApplication().getResources().getIdentifier("apparatus_camera", "layout", package_name);
    Log.d(TAG,"camera_layout_id: " + camera_layout_id);
    content = inflater.inflate(camera_layout_id, container, false);
    camera_component_id = getActivity().getApplication().getResources().getIdentifier("camera", "id", package_name);
    Log.d(TAG,"camera_component_id: " + camera_component_id);
    CameraView camera_view = (CameraView) content.findViewById(camera_component_id);
    //camera_view.lockToLandscape(true);
    Log.d(TAG,"camera_view orientation: " + camera_view.getDisplayOrientation());
    setCameraView(camera_view);
    return(content);
    }

    public int getIdentifier(String asset, String type) {
    return getActivity().getApplication().getResources().getIdentifier(asset,type,package_name);
    }

    public Button getButton() {
    return ((Button)content.findViewById(getIdentifier("record_button","id")));
    }


}

0 ответов

Другие вопросы по тегам