Kivy

2013-02-16 16 views
7

के माध्यम से प्रवेश एंड्रॉयड कैमरा कृपया मैं पहुँच kivy के माध्यम से एंड्रॉयड कैमरा, या एक पुस्तकालय है कि मैं कैमरा एक्सेस करने के kivy साथ एकीकृत कर सकते हैं पाने के लिए चारों ओर एक काम के लिए देख रहा हूँ।Kivy

मैं बहुत एंड्रॉयड के लिए एक आवेदन के विकास कर रहा हूँ लेकिन यूआई के लिए अजगर-kivy का उपयोग कर,

कुछ भी वास्तव में सराहना की जाएगी,

धन्यवाद।

उत्तर

2

किवी को कैमरे को कॉल करने के लिए कुछ मूल समर्थन है। एक कोर प्रदाता के लिए this page from the new programming guide या यूक्स विजेट के लिए this page from the new programming guide देखें। सिद्धांत रूप में, कोर प्लेटफ़ॉर्म के बीच अनुकूलित करने में सक्षम होना चाहिए और विजेट को कैमरे का उपयोग करने में सक्षम होना चाहिए।

+3

किवी कैमरा एंड्रॉइड कैमरा के साथ काम नहीं करता है। मैंने एंड्रॉइड डिवाइस पर कैमरे को कई बार शुरू करने की कोशिश की लेकिन हमेशा असफल रहा, लेकिन यह डेस्कटॉप वातावरण पर पूरी तरह से काम करता है। – Plaix

1

This एक विवाद के लिए लिंक जहां एक कस्टम कार्यान्वयन पाया जा सकता है। यह एंड्रॉइड एपीआई के कैमरा वर्ग के पायजेनियस के स्वचालित रैपिंग पर आधारित है। मैंने कोशिश नहीं की लेकिन आप इसे आज़मा सकते हैं ...

5

मेरा नमूना कोड है, जो एंड्रॉइड पर काम करता है। बस उस फ़ाइल को आयात करें https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py इसके अलावा, प्रकट करने के लिए कैमरे अनुमतियां जोड़ना न भूलें।

main.py:

__version__ = '1.0' 

import kivy 

# importing file from https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py 
# I downloaded it and saved it in the same directory: 
from camera import AndroidCamera 

from kivy.app import App 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout 
from kivy.properties import ObjectProperty, StringProperty 

import base64 

class MyCamera(AndroidCamera): 
    pass 

class BoxLayoutW(BoxLayout): 
    my_camera = ObjectProperty(None) 
    # /sdcard means internal mobile storage for that case: 
    image_path = StringProperty('/sdcard/my_test_photo.png') 

    def __init__(self, **kwargs): 

     super(BoxLayoutW, self).__init__() 

     self.my_camera = MyCamera() 

    def take_shot(self): 
     self.my_camera._take_picture(self.on_success_shot, self.image_path) 

    def on_success_shot(self, loaded_image_path): 
     # converting saved image to a base64 string: 
     image_str = self.image_convert_base64 
     return True 

    #converting image to a base64, if you want to send it, for example, via POST: 
    def image_convert_base64(self): 
     with open(self.image_path, "rb") as image_file: 
      encoded_string = base64.b64encode(image_file.read()) 
     if not encoded_string: 
      encoded_string = '' 
     return encoded_string 

if __name__ == '__main__': 

    class CameraApp(App): 
     def build(self): 
      main_window = BoxLayoutW() 
      return main_window 

    CameraApp().run() 

camera.kv:

<BoxLayoutW>: 

    Button: 
     text: 'shot' 
     on_release: root.take_shot() 
+0

@Suzana_K और megastruktur: मैंने कोड का उपयोग किया है और यह तस्वीर को/sdcard में ठीक से सहेजने में काम करता है (यह एंड्रॉइड के लिए मूल कैमरा इंटरफ़ेस शुरू करता है) लेकिन शॉट के बाद ऐप बस बंद हो जाता है/यह ऐप स्क्रीन पर वापस नहीं आता है तस्वीर का उपयोगमैं अभी के लिए Kivy लॉन्चर का उपयोग कर रहा हूँ। क्या आप इससे मेरी सहायता कर सकते हैं? – simplynail

0

के रूप में यह मुश्किल मुझे जवाब मैंने सोचा कि मैं अपनी यात्रा साझा करेंगे कैसे एंड्रॉयड पर कैमरे का उपयोग करने को खोजने के लिए था अगले व्यक्ति के समय को बचाने के जवाब में।

https://kivy.org/docs/examples/gen__camera__main__py.html

अंत में मैं समाधान ऊपर तैनात है, और यह पता चला कुछ समय मेरे एप्लिकेशन में यह लागू करने बर्बाद कर के बाद पाया:

मैं Kivy से सीधे काम कैमरा वर्ग बनाने के लिए जिस तरह से नहीं मिल सका फोटो लेने के बाद ऐप पर वापस जाना असंभव था - ऐप को समाप्त कर दिया गया था, इसलिए मैं तस्वीर का उपयोग करने के लिए ऐप पर वापस नहीं जा सका (मैं किवी लॉन्चर का उपयोग कर रहा था)। बस हाल ही में मैं छोड़ दिया गया था कैमरा तक पहुँचने का इस तरह से (https://github.com/kivy/plyer/issues/16#issuecomment-54094174)

पता चला लेकिन फिर मैं समाधान के नीचे पाया और बस उदाहरण कोड ऐसा मुझे वांछित परिणाम प्राप्त करने में सक्षम हो जाएगा लग रहा है चलाकर (यह सिर्फ जरूरत है एक छोटे से फेरबदल जब एंड्रॉयड कैमरा रद्द कर दिया गया/कोई तस्वीर नहीं लिया गया है दुर्घटना के लिए नहीं)

https://github.com/kivy/kivy/tree/master/examples/android/takepicture

संपादित करें: प्रतीत होता है क्योंकि मैं सर्वोच्च विजेट में on_pause: return True को लागू नहीं किया था मेरे ऐप समाप्त किया गया। फिर भी ऊपर दिया गया पाठ उपयोगी हो सकता है