6
votes

Y a-t-il un moyen de libérer une caméra de différentes activités après l'acquérir d'une autre activité?

Je développe une application de lampe de poche dans laquelle il existe une lampe de poche normale dans une activité et une lumière stroboscopique dans une activité. Maintenant, j'accepte la caméra dans l'activité de la lampe de poche. Mais lorsque je suis oving à une activité stroboscopique, j'ai besoin de libérer la caméra acquise par l'activité de la lampe de poche. Je ne veux pas libérer la caméra à l'allause de l'activité de la lampe de poche car cela arrêterait la caméra même si l'utilisateur appuie sur le bouton Accueil. Je souhaite libérer la caméra uniquement lorsque l'utilisateur va à l'activité Strobe ou il quitte l'application par le bouton arrière. De plus, je veux réacquérir la caméra si l'utilisateur revenait à l'activité de la lampe de poche à partir d'une activité strobe. Est leur quand même pour le faire?


3 commentaires

Quel est le cas d'utilisation? Pourquoi voudriez-vous que la caméra reste allumée lorsque l'utilisateur appuie sur la maison?


En fait, la torche doit être allumée à moins que l'utilisateur appuie la sortie ou la désactive ..


Comment l'utilisateur va à activité strobe ? Il devrait y avoir un bouton ou quelque chose de bien. Vous pouvez libérer l'appareil photo lorsque l'utilisateur appuie sur ce bouton juste avant d'aller à cette activité!


4 Réponses :


1
votes

Je veux relâcher la caméra uniquement lorsque l'utilisateur va à Strobe Activity ou autrement, il quitte l'application par bouton arrière.

Si vous ne relâchez pas les ressources de la caméra dès que possible, l'utilisateur ne pourra pas utiliser l'appareil photo à partir d'une autre application. Par exemple, si l'utilisateur de votre application appuierait une touche HOME, l'objet de la caméra serait laissé verrouillé par votre application. Cela entraînerait un comportement gênant: par exemple, l'utilisateur omet de démarrer une application de caméra.

comme Documents officiels Suggérer:

Important : Communiqué d'appel () Pour libérer l'appareil photo pour une utilisation par d'autres applications. Les applications doivent libérer la caméra immédiatement en Onpause ()

Je veux relâcher la caméra uniquement lorsque l'utilisateur va à Strobe Activity ou, autrement, il quitte l'application par bouton arrière

Si vous ne faites pas Release Ressources de caméra manuellement, ils ne sera pas libéré simplement appuyer simplement sur le bouton arrière et " sortant " votre application.

Je souhaite également réacquérir la caméra si l'utilisateur revenait à l'activité de la lampe de poche à partir d'une activité strobe. Est leur quand même de faire cela.?

Connectez-vous simplement à votre caméra dans ONRESUME () et relâchez des ressources en Onpause ().


0 commentaires

0
votes

Je ne vous demanderai pas de vous arrêter de faire ce que vous voulez ou de vous parler des suggestions officielles.

Vous pouvez réaliser cette fonctionnalité en utilisant une classe distincte pour travailler avec la caméra et déclarer toutes ses fonctions et ses membres en tant que statique.

  • Chaque fois que vous passez à l'activité Strobe, libérez simplement la caméra en utilisant la fonction statique de la classe distincte dans ONCREATE de l'activité Strobe.
  • Faites la même chose dans Ondestroy () de l'activité de la lampe de poche, mais Si vous terminez () Activité de la lampe de poche lorsque vous passez à l'activité Strobe. Ensuite, vous n'avez pas besoin d'effectuer une étape au-dessus de l'étape et votre travail sera effectué avec cette étape uniquement.

0 commentaires

7
votes

D'autres réponses vous ont dit de ne pas faire cela et pourquoi. Mais pour répondre à votre question:

Conservez une référence à l'instance code> Caméra CODE> dans une variable de membre statique, de préférence dans une classe distincte, comme celle-ci: P>

public class Globals {
    public static Camera myCamera;
}


1 commentaires

Mise en œuvre correcte



0
votes

La meilleure explication pour cela est comme indiqué par David Wasser. Nous pouvons créer une instance globale de la caméra, puis l'utiliser partout où requis.

Globaux de classe publique { Caméra statique publique mycamera; }

Bien que une autre solution de contournement consiste à créer des boutons pour entrer dans chaque type de lumière et chacun et chacun ayant différentes classes. Dans ce cas, nous pouvons laisser l'onpause sur la caméra telle qu'elle est, et il ne ferme pas la caméra sur le bouton de la maison, mais nous pouvons libérer l'appareil photo dès que l'utilisateur passe à l'activité qui contient des boutons pour sélectionner la caméra. types de lumière. Donc, la caméra sera toujours libre tout en sélectionnant.


0 commentaires