2015-05-20 2 views
5

मैं एंड्रॉइड के लिए एक एपीआई बना रहा हूं, जहां डेवलपर एक तस्वीर लेने के लिए मेरी कक्षा का उपयोग कर सकते हैं। लेकिन, मैं चित्रचित्र पर जाकर बिटमैप कैसे वापस कर सकता हूं। मेरी कोड देखो, कृपया:एंड्रॉइड पर पिक्चरटेकन पर एक बिटमैप कैसे वापस करें?

यह MainActivity पर एक बटन है:

button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // onPictureTaken does not return nothing 
      // so, how can I get a bitmap from takePicture? 
      Bitmap mBitmap = CameraUtils.takePicture(); 
     } 
    }); 

यहाँ और मेरी कक्षा CameraUtils है:

public class CameraUtils implements Camera.PictureCallback { 

private Camera mCamera = null; 
private SurfaceTexture surfaceTexture = new SurfaceTexture(0); 

public Bitmap takePicture() { 

    try { 
     mCamera = Camera.open(1); 

     Camera.Parameters params = mCamera.getParameters(); 
     List<Camera.Size> sizes = params.getSupportedPictureSizes(); 
     params.setPictureFormat(ImageFormat.JPEG); 
     params.setPictureSize(sizes.get(0).width, sizes.get(0).height); 
     mCamera.setParameters(params); 

     mCamera.setPreviewTexture(surfaceTexture); 
     mCamera.startPreview(); 

     Log.i("MyCamera", "before takePicture"); 

     new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
       mCamera.takePicture(null, null, CameraUtils.this); 
       } 
      }, 1000); 


     //how to return a bitmap from here?? 
     //how to wait for onPictureTaken?? 
     return ????? 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
     Bitmap mBitmap = BitmapFactory 
       .decodeByteArray(data, 0, data.length); 

     // 
     // how to return something here?? 
     // 
     // 
     // What logic I have to do? 
     // 

     // 
     // 
     // return mBitmap; 
     // 
} 
} 

मैं अपने वर्ग का उपयोग कर एक बिटमैप पाने के लिए क्या करना है ' तरीका?

धन्यवाद।

उत्तर

0

आप नहीं करते हैं। इसके बजाय आप यूआई को अपडेट करते हैं जिसे आप पिक्चरटेकन पर चाहते हैं। आप इससे कुछ भी वापस नहीं करते हैं।

+0

मेरी मदद करने के लिए धन्यवाद। मैं यूआई पर बिटमैप का उपयोग नहीं करना चाहता हूं। मैं इस बिटमैप को अन्य तरीकों से संसाधित करना चाहता हूं। उदाहरण के लिए: बिटमैप बिटमैप = कैमराउल्ट्स.take चित्र(); कैमराउटिल। रोटेट बिटमैप (बिटमैप, ड्रेग्री); क्या ऐसा करने का कोई तरीका है? – Caaarlos

+0

हां-इसे सब कुछ करें PictureTaken –

+0

लेकिन मेरे पास बिटमैप में हेरफेर करने के लिए बहुत सी विधियां हैं। मुझे वास्तव में बिटमैप प्राप्त करने और जिस तरह से मैं चाहता हूं, छवि को संसाधित करने के लिए कुछ चाहिए। क्या कोई तर्क है, यह सबचित्र करने के लिए अलग है? – Caaarlos

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