2012-08-01 16 views
5

मैं एंड्रॉइड एप्लिकेशन विकास में नौसिखिया हूं। मैं एक ऐसा एप्लिकेशन बनाना चाहता हूं जो कैमरे से स्ट्रीम प्राप्त करे और SurfaceView या FrameLayout पर दिखाएं।एंड्रॉइड - कैमरे पर ग्रिड लाइनें दिखाएं

मुझे "ग्रिड लाइन्स दिखाएं" स्ट्रीमिंग पर उपरोक्त एक विकल्प दिखाने की आवश्यकता है, जब उपयोगकर्ता उस पर क्लिक करता है तो ग्रिड लाइन कैमरा स्ट्रीम पर दिखाई देगी।

क्या कोई मेरी मदद कर सकता है कि मैं कैमरा स्ट्रीमिंग पर ग्रिड लाइन कैसे दिखा सकता हूं ???

कोई भी मदद सराहनीय होगी ...

धन्यवाद। मोहसिन

उत्तर

11

यदि आप अपने स्क्रीन आकार के आधार पर लाइनों को द्विपक्षीय रूप से आकर्षित करना चाहते हैं तो आप इसे अपने कैमरे के पूर्वावलोकन वर्ग में जोड़कर इसका उपयोग कर सकते हैं।

@Override 
    protected void onDraw(Canvas canvas) 
    { 
     if(grid){ 
     // Find Screen size first 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     int screenWidth = metrics.widthPixels; 
     int screenHeight = (int) (metrics.heightPixels*0.9); 

     // Set paint options 
     paint.setAntiAlias(true); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.argb(255, 255, 255, 255)); 

     canvas.drawLine((screenWidth/3)*2,0,(screenWidth/3)*2,screenHeight,paint); 
     canvas.drawLine((screenWidth/3),0,(screenWidth/3),screenHeight,paint); 
     canvas.drawLine(0,(screenHeight/3)*2,screenWidth,(screenHeight/3)*2,paint); 
     canvas.drawLine(0,(screenHeight/3),screenWidth,(screenHeight/3),paint); 
     } 
    } 

आप भी अपने कैमरा पूर्वावलोकन वर्ग के निर्माता में निम्न पंक्ति जोड़ने की जरूरत:

this.setWillNotDraw(false); 
+0

इस मामले के लिए, आप अपने निर्माता पर अपने रंग विकल्पों को सेट और कुछ संसाधनों को बचाने। पेंट विकल्प स्थिर हैं और ऑनड्रा() विधि कई बार कॉल की जाएगी। – Oximer

3

यदि आप कैमरा पूर्वावलोकन पर ओवरले चाहते हैं, तो आपको अपना कैमरा लिखना होगा। यह एक ही जवाब में कवर करने के लिए काफी मुश्किल विषय है, लेकिन यहां एक गाइड है कि मिलना चाहिए आप शुरू कर दिया है:

http://developer.android.com/guide/topics/media/camera.html#custom-camera

एक बार जब आप कैमरे काम कर रहे हैं, तो अपना कैमरा गतिविधि के एक्सएमएल लेआउट को संपादित करें। RelativeLayout का उपयोग करें, यह आपको अपनी पूर्वावलोकन सतह पर अन्य दृश्य (बटन, छवियां) रखने की अनुमति देगा।

ऊपर वर्णित मार्गदर्शिका के साथ संगत एक्सएमएल लेआउट का एक उदाहरण यहां दिया गया है। पूर्वावलोकन सतह प्रोग्रामेटिक रूप से बनाई गई है और फ्रेमलेआउट (ऊपर लिंक गाइड में अधिक) में डाल दी गई है। ImageView पूर्वावलोकन सतह पर खींचा जाएगा।

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

    <ImageView 
    android:id="@+id/grid" 
    android:src="@drawable/your_grid_drawable" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</RelativeLayout> 

आपको वहां एक कैप्चर बटन और ग्रिड स्विच बटन भी रखना होगा, लेकिन आपको यह विचार प्राप्त करना चाहिए कि ऊपर दिए गए उदाहरण से इसे कैसे किया जाए। बस सापेक्ष दृश्य में अधिक तत्व जोड़ें और उन्हें सामान्य लेआउट में रखें जैसा कि आप करेंगे।

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