"java.lang.IllegalArgumentException: нет конфигов, соответствующих configSpec" При открытии камеры Intent

Это моя простая демо-версия камеры, в которой у меня есть только одно действие.....

package x.y;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;
public class PhotoShoot extends Activity {
    final static int CAMERA_RESULT = 0;
    ImageView imv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, CAMERA_RESULT);
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        if (resultCode == RESULT_OK)
        {
            Bundle extras = intent.getExtras();
            Bitmap bmp = (Bitmap) extras.get("data");
            imv = (ImageView) findViewById(R.id.ReturnedImageView);
            imv.setImageBitmap(bmp);
        }
    }
}

И макет main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView 
        android:id="@+id/ReturnedImageView"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </ImageView>
</LinearLayout>

Манифест...

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="x.y"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PhotoShoot"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest> 

Запуск "Force close" через несколько секунд в Android-эмуляторе 2.2 от запуска намерения камеры с последующим исключением...

07-06 15:26:00.999: ERROR/AndroidRuntime(544): FATAL EXCEPTION: GLThread 11
07-06 15:26:00.999: ERROR/AndroidRuntime(544): java.lang.IllegalArgumentException: No configs match configSpec
07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

любая идея?

Ответ 1

На самом деле это часть более серьезной проблемы, и я надеюсь, что, разместив здесь, другие, кто испытал эту ошибку, прочитают эту запись. Я также надеюсь, что, если какой-либо из моих выводов неверен, кто-то приходит с более подробным объяснением и/или решением.

Основной проблемой является поддержка OpenGL. Начиная с версии 2.2, Android поддерживает OpenGL ES 2.0 и начиная с версии 4.0.3, эмуляторы Android поддерживают OpenGL ES 2.0. Код, который использует OpenGL ES 2.0, не будет работать на эмуляторах до 4.0.3. [Очевидно, камера переключилась с ES 1.0 на 2.0 на Android 2.2]

Но это не все! Ни один из документов Android, с которыми я столкнулся, упоминает, что для поддержки эмуляции Open GL ES 2.0 ваш чипсет и драйвер графической карты для коробки также должны поддерживать OpenGL 2.0. Поэтому, если вы включите эмуляцию GPU на AVD и вы все еще сталкиваетесь с этой ошибкой, сделайте следующее:

1) Узнайте характеристики на вашей графической карте и посетите веб-сайт производителя чипсета, чтобы определить, совместим ли чипсет с OpenGL 2.0. Если это не так, вы S.O.L. и должен придерживаться отладки через реальное устройство Android, а не эмулятор.

2) Определите, есть ли у вас последний графический драйвер для набора микросхем. Драйверы, полученные через Microsoft (если вы используете Windows), как правило, не поддерживают OpenGL, поэтому вы хотите загрузить последний драйвер от производителя.

Надеюсь, это поможет.

Ответ 2

Камера не поддерживает эмулятор Android, поэтому не беспокойтесь об этом. Этот тип ошибки входит в Android Emulator 2.2, и я также проверил Android-эмулятор 1.6, но не получаю ошибку.

Я также проверил выше код на устройстве Android Samsung Galaxy Ace работает нормально.

Спасибо, дорогой.