"java.lang.IllegalArgumentException: нет конфигов, совпадающих с configSpec" при открытии Camera Intent - PullRequest
14 голосов
/ 06 июля 2011

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

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)

Есть идеи?

Ответы [ 2 ]

43 голосов
/ 20 сентября 2012

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

Основная проблема - поддержка 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.Поэтому, если вы включаете Эмуляцию графического процессора на AVD, и по-прежнему сталкиваетесь с этой ошибкой, сделайте следующее:

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

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

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

16 голосов
/ 06 июля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...