0

J'ai créé un FragmentActivity (VideoFragActivity) qui contient un VideoView. Parallèlement à cela, j'ai changé la FDActivity de l'exemple de code OpenCV FaceDetection dans un Fragment (FDFragment), et j'essaie de l'avoir en cours d'exécution pendant VideoFragActivity.erreur étrange - "semble que votre appareil ne prend pas en charge la caméra .."

je suis tombé sur le lien suivant alors que je cherchais de l'aide sur StackOverflow: OpenCV's native camera in Android prevents video player from working mais il est sans réponse

ma question est, est-il réellement possible sur Android d'avoir la caméra (initiée dans un fragment) courir pendant une fragmentation? Dans mon cas, est-il possible de faire fonctionner VideoFragActivity et FDFragment afin qu'une vidéo soit lue pendant que l'exemple de détection de visage opencv s'exécute?

EDIT

quand je change le XML de la hauteur FDFragment et la largeur soit wrap_content, fill_parent ou match_parent, mon application ne cherche pas à allumer l'appareil photo

mais quand je change la hauteur et largeur aux valeurs aléatoires (comme 50sp ou 100sp), il tente d'allumer la caméra (appels onCameraViewStarted()), mais me donne l'erreur:

"Il semble que votre appareil ne supporte pas l'appareil photo (ou il est verrouillé) .Application sera fermé "

J'ai vérifié que les autorisations dans mon manifeste sont correctement placées et que la caméra n'est pas utilisée par une autre application. Est-ce que quelqu'un a des idées sur la façon d'aborder cela?


ici est le code de FDFragment (s'il vous plaît laissez-moi savoir si je l'ai changé l'exemple de code d'activité OpenCV dans un fragment de manière incorrecte):

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
      Log.i(TAG, "called onCreate"); 
      super.onCreateView(inflater, container,savedInstanceState); 
     getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

      View view= inflater.inflate(R.layout.face_detect_surface_view, container, false); 
      return view; 

     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState){ 
      super.onActivityCreated(savedInstanceState); 
      mOpenCvCameraView = (CameraBridgeViewBase) getView().findViewById(R.id.fd_activity_surface_view); 
      mOpenCvCameraView.setCvCameraViewListener(this); 

     } 

...

public void onCameraViewStarted(int width, int height) { 
     mGray = new Mat(); 
     mRgba = new Mat(); 
    } 

autorisations J'ai ajouté dans le manifeste:

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.front" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.front.autofocus" 
    android:required="false" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

<application (...etc) 

toute aide est grandement appréciée !!

Répondre

0

mise à jour au cas où quelqu'un est curieux:

changé la façon dont je me suis approché en ayant un fragmentactivity avec un plan d'ensemble, puis ajouté le MediaPlayer comme un fragment et la détection de visage comme un fragment séparé.

en effet, vous CAN avez l'appareil photo en cours d'exécution lors de la lecture multimédia!

Questions connexes