2011-07-06 6 views
14

を開いている間に.....「java.lang.IllegalArgumentExceptionが:いいえコンフィグはconfigSpecと一致していない」これは私が唯一つの活性を有するような私の簡単なカメラの意図のデモであるカメラの意思

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> 

例外を次のようにカメラの意思開始からAndroidのエミュレータでonds 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) 

任意のアイデア?

+4

manifest.xmlファイルを通過できますか? – Nikhil

+0

おかげさまで@Nik、私の質問を編集しました –

答えて

43

これは実際には大きな問題の一部です。ここに投稿することで、このエラーが発生した人はこのエントリを読むことができます。もし私の結論が間違っていれば、誰かがより明確な説明や解決策を提示することを希望します。

コアの問題はOpenGLのサポートです。 2.2からは、AndroidはOpenGL ES 2.0をサポートし、4.0.3からは、AndroidエミュレータはOpenGL ES 2.0をサポートしています。 OpenGL ES 2.0を使用するコードは4.0.3より前のエミュレータでは動作しません。 [明らかに、カメラはAndroid 2.2でES 1.0から2.0に切り替わった]

しかしそれだけではない! Open GL ES 2.0エミュレーションをサポートするには、あなたのボックスのグラフィックカードチップセットとドライバがOpenGL 2.0をサポートしていなければならない、という私の遭遇したAndroidドキュメントはありません。したがって、AVDでGPUエミュレーションを有効にしてもこのエラーが発生した場合は、次の手順を実行してください。

1)グラフィックカードの仕様を調べて、チップセット製造元のWebサイトにアクセスして、OpenGL 2.0互換性があります。もしそうでなければ、あなたはS.O.Lです。エミュレータの代わりに実際のAndroidデバイスを使ってデバッグすることに固執する必要があります。

2)チップセット用の最新のグラフィックスドライバがあるかどうかを確認します。 Microsoftを使用して入手したドライバ(Windowsを使用している場合)は通常、OpenGLをサポートしていないため、製造元から最新のドライバをダウンロードする必要があります。

こちらがお役に立てば幸いです。

+1

注:gpuエミュレーションは、コマンドラインから-gpuを付けて、 – ron

+0

@マークの非常に重要な部分です。しかし、私はアンドロイド4.1エミュレータで実行しようとしましたが、OpenGLプログラムもそこで実行されていませんでした。ところで私のシステムのグラフィックカードはGL 4.1をサポートしています。それで、うまくいくはずですか? – Chaitanya

+1

ああ@マーク私の間違いは実際には4で働いている。1、私たちはスナップショットとエミュレータのGPUエミュレーションを同時に確認できません。一度に働くのは1人だけです。 :) – Chaitanya

16

カメラはAndroidエミュレータではサポートされていませんので心配しないでください。このタイプのエラーはAndroid Emulator 2.2に付属しています。Androidのエミュレータ1.6をチェックしましたが、エラーは表示されません。

Androidデバイスで上記のコードを確認しました。Samsung Galaxy Aceは正常に動作しています。

ありがとうございます。

+5

Nikは正しいです:エミュレータ1.6はこのコードを処理できますが、エミュレータ2.2は処理できません。 私はエミュレータのバグだと思っています。 – user77115

関連する問題