मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

PhotoPicker

PhotoPicker डिवाइस के कैमरे का उपयोग करके फ़ोटो कैप्चर करता है या वीडियो रिकॉर्ड करता है (ऑडियो के साथ/बिना), इफ़ेक्ट (चमक/कंट्रास्ट/तीक्ष्णता), कैमरा स्विच और वैकल्पिक पुष्टि के साथ। यह पिकर पैटर्न का पालन करता है (देखें Picker), लेकिन परिणाम एक फ़ाइल पथ है — या एक त्रुटि स्ट्रिंग।

🔴 · पैकेज: dev.crossfly.ui.picker · एक्सटेंड करता है: Picker implements GdxCamera.Listener · हार्डवेयर: कैमरा

कब उपयोग करें

  • ऐप के भीतर फ़ोटो लेना या वीडियो रिकॉर्ड करना।

कब उपयोग न करें

  • बारकोड/QR पढ़ना → BarcodePicker का उपयोग करें।

दिखावट

पूर्ण-स्क्रीन कैमरा प्रीव्यू (काला बैकग्राउंड, बिना फ़्रेम) अर्ध-पारदर्शी गोल बटनों के साथ: रद्द करें (X), कैप्चर/रिकॉर्ड (केंद्रीय), कैमरा बदलें और Config/Pause। पुष्टि के साथ फ़ोटो मोड में, एक पुष्टि/दोबारा-लें स्क्रीन।

पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएं)

PhotoPicker एक कैमरा ओवरले है — इसे खोलने के लिए, इसे किसी Button से ट्रिगर करें। उदाहरण बुनियादी उपयोग का पुनः उपयोग करता है और लौटाया गया पथ (या त्रुटि) एक Label में दिखाता है।

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label saida = new Label("Nenhuma foto ainda");
      add(LAY_AUTO, saida);

      Button tirarFoto = new Button("Tirar foto")
         .onAction(c ->
         {
            PhotoPicker pp = new PhotoPicker(PhotoPicker.Preview.PHOTO);
            pp.show(answer ->
            {
               String caminho = (String) answer;
               if (pp.isError())
                  saida.setText("Falha na câmera: " + caminho);
               else
                  saida.setText("Foto salva em: " + caminho);
            });
         });
      add(LAY_AUTO, tirarFoto);
   }
}

नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर के MainWindow ढांचे में रखें।

बुनियादी उपयोग

PhotoPicker pp = new PhotoPicker(PhotoPicker.Preview.PHOTO);
pp.show(answer ->
{
   String caminho = (String) answer;
   if (pp.isError())
      new Alert("Falha na câmera", caminho, "OK").show();
   else
      Debug.log("Foto salva em: " + caminho);
});

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
PhotoPicker(Preview type) मोड: Preview.PHOTO, Preview.MUTED_VIDEO या Preview.AUDIO_VIDEO।

प्रॉपर्टीज़ और अनुकूलन

फ़ील्ड प्रकार Default क्या करता है
PhotoPicker.defaultJpegQuality (स्टैटिक) int 90 फ़ोटो सहेजते समय JPG गुणवत्ता।
PhotoPicker.showConfirmation (स्टैटिक) boolean true फ़ोटो मोड में पुष्टि/दोबारा-लें स्क्रीन।
videoQuality Camera.AVQuality HIGH वीडियो की गुणवत्ता।
videoTimeLimit int (s) 0 रिकॉर्डिंग सीमा (0 = बिना सीमा)।

कॉलबैक और इवेंट

कॉलबैक कब ट्रिगर होता है
show(onAnswer) बंद होने पर, पथ की String सौंपता है (या "ERROR: ...")।

परिणाम (महत्वपूर्ण)

getAnswer() फ़ाइल का पथ लौटाता है (फ़ोटो का JPG या वीडियो का MP4)। कैमरा त्रुटि की स्थिति में, यह स्ट्रिंग "ERROR: ..." लौटाता है।

⚠️ मान को पथ के रूप में मानने से पहले हमेशा isError() की जाँच करें — getAnswer() पथ और त्रुटि संदेश दोनों को मिलाता है।

स्थितियां

  • onAppPause/onAppResume कैमरे को रोकते/फिर से शुरू करते हैं; onRemove सब कुछ रोकता है और listener को साफ़ करता है।
  • कैमरा त्रुटि → answer = "ERROR: ..." लिखता है और बंद कर देता है।

ऑडियो और 30s सीमा वाला वीडियो

PhotoPicker vp = new PhotoPicker(PhotoPicker.Preview.AUDIO_VIDEO);
vp.videoTimeLimit = 30;
vp.show(a -> Debug.log("MP4 em: " + a));

सर्वोत्तम अभ्यास

  • लौटाई गई फ़ाइल खोलने से पहले isError() की जाँच करें।
  • hide() के बाद उसी इंस्टैंस का पुनः उपयोग न करें — बंद होने पर कैमरा संसाधन मुक्त हो जाते हैं।

सामान्य गलतियां

  • isError() की जाँच किए बिना answer को पथ के रूप में मानना — यह "ERROR: ..." हो सकता है।
  • पोर्टेबल पथ मानना — वीडियो का पथ /sdcard/... (Android) में निश्चित है।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपी: cookbook/
  • पैटर्न का आधार: Picker
  • संबंधित कंपोनेंट: BarcodePicker
क्या यह पृष्ठ उपयोगी था?