2011-07-06 12 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> 

फेंकने "बंद के लिए मजबूर" कुछ सेकंड के बाद 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

intrest @Nik के लिए धन्यवाद, मैंने अपना प्रश्न संपादित किया है –

उत्तर

43

यह वास्तव में एक बड़ा मुद्दा का हिस्सा है, और मुझे आशा है कि यहां पोस्ट करके, इस त्रुटि का अनुभव करने वाले अन्य लोग इस प्रविष्टि को पढ़ लेंगे। मैं समान रूप से आशा करता हूं कि, यदि मेरे किसी भी निष्कर्ष गलत हैं, तो कोई अधिक निश्चित स्पष्टीकरण और/या समाधान के साथ आता है।

मूल मुद्दा ओपनजीएल समर्थन है। 2.2 की शुरुआत से, एंड्रॉइड ओपनजीएल ईएस 2.0 का समर्थन करता है, और 4.0.3 से शुरू होता है, एंड्रॉइड अनुकरणकर्ता ओपनजीएल ईएस 2.0 का समर्थन करते हैं। कोड जो OpenGL ES 2.0 का उपयोग करता है 4.0.3 से पहले अनुकरणकर्ताओं पर काम नहीं करेगा। [जाहिर है, कैमरा एंड्रॉइड 2.2 पर ईएस 1.0 से 2.0 तक स्विच किया गया]

लेकिन यह सब कुछ नहीं है! मेरे द्वारा सामने आए एंड्रॉइड दस्तावेज़ों में से कोई भी उल्लेख नहीं करता है कि, ओपन जीएल ईएस 2.0 इम्यूलेशन का समर्थन करने के लिए, आपके बॉक्स के ग्राफ़िक कार्ड चिपसेट और ड्राइवर को ओपनजीएल 2.0 का भी समर्थन करना चाहिए। इसलिए, यदि आप एवीडी पर जीपीयू इम्यूलेशन को सक्षम करते हैं और आपको अभी भी यह त्रुटि आती है, तो निम्न कार्य करें:

1) अपने ग्राफ़िक कार्ड पर चश्मा ढूंढें और चिपसेट निर्माता की वेबसाइट पर जाएं यह निर्धारित करने के लिए कि चिपसेट ओपनजीएल 2.0 है या नहीं संगत। यदि यह नहीं है, तो आप एसओएल हैं। और एक एमुलेटर के बजाय एक वास्तविक एंड्रॉइड डिवाइस के माध्यम से डीबगिंग के लिए चिपकना चाहिए।

2) निर्धारित करें कि आपके पास चिपसेट के लिए नवीनतम ग्राफिक्स ड्राइवर है या नहीं। माइक्रोसॉफ्ट के माध्यम से प्राप्त ड्राइवर्स (यदि आप विंडोज का उपयोग कर रहे हैं) आम तौर पर ओपनजीएल का समर्थन नहीं करते हैं, तो आप निर्माता से नवीनतम ड्राइवर डाउनलोड करना चाहते हैं।

मुझे उम्मीद है कि इससे मदद मिलती है।

+1

नोट: gpu emulation कमांड लाइन से चालू है -gpu – ron

+0

@Mark पर जानकारी का बहुत महत्वपूर्ण हिस्सा रहा है। लेकिन, मैंने एंड्रॉइड 4.1 एमुलेटर पर चलने की कोशिश की, लेकिन ओपनजीएल प्रोग्राम भी वहां नहीं चल रहा था। वैसे ही मेरे सिस्टम का ग्राफिक कार्ड खुला जीएल 4.1 का समर्थन करता है। तो, यह सही काम करना चाहिए? – Chaitanya

+1

ओह @ मार्क मेरी गलती वास्तव में 4 में काम कर रही है।1, केवल एक चीज है कि हम स्नैपशॉट और एक ही समय में एमुलेटर में जीपीयू इम्यूलेशन पर जांच नहीं कर सकते हैं। केवल एक ही समय में काम करेगा। :) – Chaitanya

16

कैमरा एंड्रॉइड एमुलेटर में समर्थन नहीं है इसलिए इसके बारे में चिंता न करें। इस प्रकार की त्रुटि एंड्रॉइड एमुलेटर 2.2 में आती है और मैंने एंड्रॉइड एमुलेटर 1.6 भी जांच लिया है लेकिन त्रुटि नहीं मिल रही है।

मैंने एंड्रॉइड डिवाइस में कोड ऊपर से भी चेक किया है सैमसंग गैलेक्सी ऐस ठीक काम कर रहा है।

धन्यवाद प्रिय।

+5

निक सही है: एम्यूलेटर 1.6 इस कोड को संभाल सकता है, लेकिन एम्यूलेटर 2.2 नहीं कर सकता है। मैं इसे एक एमुलेटर बग मानता हूं। – user77115

संबंधित मुद्दे