Android Nexus 7 Jelly Bean: startPreview / takePicture, вызывающий getCameraStereoMode регистрирует ошибку

Я только что получил Nexus 7, я пытаюсь передать некоторый код. Следующая строка работает без проблем на Xoom, использующем Ice Cream:

mCamera.startPreview(); 

Он также корректно работает на Nexus 7, но он регистрирует ошибки:

 E/NvOmxCamera( 126): OMX_ERRORTYPE android::NvOmxCamera::getCameraStereoMode(NvxComponent*, NvOmxCameraUserStereoMode&): Error: invalid NVX mode 0. E/NvOmxCamera( 126): OMX_ERRORTYPE android::NvOmxCamera::getCameraStereoModeAndCaptureInfo(NvxComponent*, NvOmxCameraUserStereoMode&, NVX_STEREOCAPTUREINFO&): getCameraStereoMode failed with 0x00000000 

Это проблема, потому что она также регистрирует эти ошибки один раз для каждого кадра при выполнении строки

 mCamera.takePicture(null, null, null, pictureCallback); 

Поскольку я принимаю 10 кадров в секунду, это меня беспокоит, поэтому я хотел бы исправить ошибки. Я прошел через все источники (android sdk и ndk), и текст для указанных выше ошибок нигде не отображается. Я считаю, что из многих поисковых запросов это происходит в реализации Nvidia OpenMax, где он, похоже, привязан к параметру «nv-stereo-mode», который имеет возможные значения «левый», «правый» или «стерео», (У Nexus 7 есть только одна камера, поэтому я не знаю, почему это волнует режимы стереокамер, но что бы там ни было). Я попытался установить его для каждого из правовых значений, используя, например:

 mParams = mCamera.getParameters(); mParams.set("nv-stereo-mode", "right"); mCamera.setParameters(mParams); 

Но мой журнал говорит:

 E/NvOmxCameraSettingsParser( 126): Skipping non-standard parameter: nv-stereo-mode 

Это похоже на исходный файл nvomxcamerasettingsparser.cpp, который я не могу найти нигде в Интернете. Я действительно не знаю, куда идти отсюда, я встречался и искал все, что мог придумать, поэтому любая помощь была бы очень восприимчивой.

Solutions Collecting From Web of "Android Nexus 7 Jelly Bean: startPreview / takePicture, вызывающий getCameraStereoMode регистрирует ошибку"

Попробуйте ввести код для вас. Надеюсь, все будет хорошо.

 import java.io.File; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.hardware.Camera; import android.media.CamcorderProfile; import android.media.MediaRecorder; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Environment; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class Record extends Activity implements SurfaceHolder.Callback, MediaRecorder.OnInfoListener { Button myButton; MediaRecorder mediaRecorder; SurfaceHolder surfaceHolder; boolean recording; Camera camera; int mCount; TextView msg; boolean rec = false; String fileName = "DamageVideo.mp4"; CountDownTimer timer; /** Called when the activity is first created. */ @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); recording = false; mediaRecorder = new MediaRecorder(); initMediaRecorder(); setContentView(R.layout.record_view); SurfaceView myVideoView = (SurfaceView) findViewById(R.id.videoview); surfaceHolder = myVideoView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); myButton = (Button) findViewById(R.id.mybutton); msg = (TextView) findViewById(R.id.txttimer); myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub myButton.setVisibility(View.GONE); myButton.setClickable(false); try { if (recording) { recording = false; myButton.setClickable(true); myButton.setVisibility(View.VISIBLE); Intent intent = new Intent(); setResult(100, intent); finish(); overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out); mediaRecorder.stop(); mediaRecorder.release(); moveFile(); } else { recording = true; camera.stopPreview(); camera.release(); // myButton.setVisibility(View.GONE); timer.start(); // myButton.setClickable(false); mediaRecorder.start(); new CountDownTimer(21000, 1000) { public void onTick(long millisUntilFinished) { msg.setText(+(22000 - (millisUntilFinished - 0)) / 1000 + "/20"); } public void onFinish() { // msg.setText("10/10"); } }.start(); myButton.setText("STOP"); // camera.release(); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }); timer = new CountDownTimer(1000, 1000) { public void onTick(long millisUntilFinished) { } public void onFinish() { myButton.setVisibility(View.VISIBLE); myButton.setClickable(true); } }; } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub try { prepareMediaRecorder(); camera = Camera.open(); try { camera.setPreviewDisplay(surfaceHolder); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } camera.startPreview(); } catch (Exception e) { // TODO: handle exception } } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub } private void initMediaRecorder() { mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); CamcorderProfile camcorderProfile_HQ = CamcorderProfile .get(CamcorderProfile.QUALITY_HIGH); mediaRecorder.setProfile(camcorderProfile_HQ); // mediaRecorder.setVideoFrameRate(30); // File dir = Const.getFilePath(); File dir = Environment.getExternalStorageDirectory(); // String fname = "DamageVideo.mp4"; mediaRecorder.setOutputFile(dir.getAbsolutePath() + "/" + fileName); mediaRecorder.setMaxDuration(20000); // Set max duration 60 sec. mediaRecorder.setOnInfoListener(this); } private void prepareMediaRecorder() { mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); try { mediaRecorder.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void onInfo(MediaRecorder mr, int what, int extra) { // TODO Auto-generated method stub if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) { // mr.stop(); // mr.release(); recording = false; mediaRecorder.stop(); Intent intent = new Intent(); setResult(100, intent); finish(); overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out); mediaRecorder.release(); moveFile(); } } @Override public void onBackPressed() { super.onBackPressed(); try { if (!recording) { File dir = Environment.getExternalStorageDirectory(); File imgFile = new File(dir.getAbsolutePath(), fileName); if (imgFile.exists()) { imgFile.delete(); } camera.stopPreview(); camera.release(); } else { mediaRecorder.stop(); mediaRecorder.release(); moveFile(); } recording = false; Intent intent = new Intent(); setResult(100, intent); finish(); overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out); } catch (Exception e) { // TODO: handle exception } } public void moveFile() { File temp = Environment.getExternalStorageDirectory(); File from = new File(temp.getAbsolutePath(), fileName); File dir = Const.getFilePath(Record.this); File to = new File(dir.getAbsolutePath(), fileName); from.renameTo(to); } @Override public void onResume() { super.onResume(); } } // xml file <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <SurfaceView android:id="@+id/videoview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:background="#55A5D8" android:padding="5dp" android:text="REC" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:id="@+id/txttimer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="" android:textColor="#55A5D8" android:textSize="20sp" android:textStyle="bold" /> </RelativeLayout>