Я дерьмо в английском, надеюсь, что все в порядке.
Я работаю над CWAC-камерой, и есть проблема, которую я не понимаю.
Я пытаюсь сделать снимок с помощью CWAC-камеры, а затем отображаю его в «галерейном» действии. Дело в том, что «диапазон» (?) моего предварительного просмотра камеры намного меньше, чем в моем предварительном просмотре галереи.
Я думаю, будет понятнее, если я покажу вам фотографии:
Предварительный просмотр камеры: http://i.imgur.com/U7RAMo6.jpg (это снимок экрана )
Предварительный просмотр галереи: http://i.imgur.com/jU5CAmG.jpg
Я хочу, чтобы предварительный просмотр моей камеры отображал то же самое изображение, что и предварительный просмотр моей галереи. И я не могу заставить его работать. Как видите, предварительный просмотр галереи стал намного шире, и я хочу использовать его для предварительного просмотра камеры.
Мое программное обеспечение использует getPreferredPreviewSize(). Я пытался переопределить getPreviewSize() или getPreferredPreviewSizeForVideo(), но это ничего не меняет. Я думаю, что не понимаю, как использовать эти переопределения, даже с документацией и вопросами о stackoverflow.
Вот обрезанная версия моей MainActivity:
private CameraView mCameraView;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
MySingletonClass singleton = new MySingletonClass();
Singleton.getInstance().setMySingletonClass(singleton);
// We overrided the Camera Host so we can start the email activity in the saveImage() method
MyCustomCameraHost myCustomCameraHost = new MyCustomCameraHost(activity, this, mIsSaving, mCameraView);
this.setHost(myCustomCameraHost);
}
[...]
@Override
public void onDetach() {
super.onDetach();
mSensorManager.unregisterListener(this);
}
[...]
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_preview, container, false);
view.setOnClickListener(this);
mCameraView = (CameraView) view.findViewById(R.id.cameraSurfaceView);
mCameraView.setHost(getHost());
//Camera.open(getHost().getCameraId()).setOneShotPreviewCallback(this);
mCameraView.setPreviewCallback(this);
setCameraView(mCameraView);
return view;
}
Вот мой макет CameraView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@drawable/border"
android:layout_height="match_parent" >
[...]
<com.commonsware.cwac.camera.CameraView
android:id="@+id/cameraSurfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
[...]
</RelativeLayout>
Моя активность отображения проста:
mImageView.setImageBitmap(myBitmap);
У моего телефона родное разрешение 1280*720, поэтому я подумал, что это соотношение было взято для предварительного просмотра камеры. Сделанная фотография имеет разрешение 3264 * 2448, поэтому, когда я показываю ее в своей галерее, она имеет черные рамки (мне все равно).
Не могли бы вы помочь мне исправить «диапазон» моего предварительного просмотра камеры?
Спасибо за ваше время.
CameraView
. Я думаю, что не понимаю, как использовать эти переопределения - никто не может вам помочь с ними, так как они не в вашем вопросе. - person CommonsWare   schedule 03.07.2015mImageView.setImageBitmap(myBitmap);
для понимания. Вам также может понадобиться отключить предварительный просмотр без полей. Для этого getPreviewSize() должен возвращать размер с тем же соотношением, что и в галерее? И я думаю, что соотношение сторон 4:3 (1,33 - нормальное) с учетом разрешения изображения. Как вы думаете, я должен переопределить getPreviewSize(), чтобы получить соотношение сторон 4:3 для предварительного просмотра камеры? - person Axel Syntes   schedule 03.07.2015getPreviewSize()
и вернуть размер с соотношением сторон 4:3? (Мой предварительный просмотр изображения 4: 3), верно? См. ссылка[ссылка] - person Axel Syntes   schedule 03.07.2015CameraHost
настроен наfalse
сuseFullBleedPreview()
. В моем логарифме он проходит черезuseFullBleedPreview()
, поэтому я думаю, что там все в порядке. - person Axel Syntes   schedule 03.07.2015