IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Mode paysage et portrait


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Mode paysage et portrait
    Bonjour à toutes et à tous,

    J'ai créé une simple application (allumer la LED pour en faire une lampe d'éclairage) . Elle fonctionne en mode portrait, mais elle plante en mode paysage.

    Que faut-il faire pour que cela fonctionne dans les deux modes ?

    Voici le source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package com.example.Lampe_Flash;
     
    import android.app.Activity;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.hardware.Camera;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
    	private Button bouton;
    	private TextView info;  //variable état du flash et flash
    	private boolean isFlashOn = false;
    	private Camera camera; //on associe nos 2 variables aux id de l'interface graphique
    	private Context context;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		bouton = (Button) findViewById(R.id.flash);
    		info = (TextView) findViewById(R.id.barreEtat); //vérifie si le tél possède un flash
    		context = this;
    		PackageManager pm = context.getPackageManager();
    		if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
    			Toast.makeText(getApplicationContext(), "Votre téléphone ne possède pas de flash!", Toast.LENGTH_SHORT).show();
    			return;
    		}
    		camera = Camera.open();
    		final android.hardware.Camera.Parameters p = camera.getParameters();
     
    		bouton.setOnClickListener(new View.OnClickListener() { //clique sur le bouton
    			public void onClick(View arg0) {
    				if (isFlashOn) {
    					p.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_OFF);
    					camera.setParameters(p);
    					isFlashOn = false;
    //on change la couleur de la zone en gris signifiant que le flash est éteint
    					info.setBackgroundColor(Color.BLUE);
    					info.setText("LED éteinte");
    				} else {
    //on change la couleur de la zone en blanc signifiant que le flash est allumé
    					info.setBackgroundColor(Color.WHITE);
    					info.setText("LED allumée");
    					p.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_TORCH);
    					camera.setParameters(p);
    					isFlashOn = true;
    				}
    			}
    		});
    	}
     
    	@Override
    	protected void onResume() {
    		super.onResume();
    	}
     
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    	}
    }
    et le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relativeLayout1"
        android:background="#000"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
     
        <Button
            android:id="@+id/flash"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="#000"
            android:layout_alignParentTop="true"
            android:layout_above="@+id/barreEtat" />
     
        <EditText
            android:id="@+id/barreEtat"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="@android:color/holo_blue_light"
            android:text="LED éteinte"
            android:singleLine="false"
            android:textAlignment="center"
            android:textStyle="bold"
            android:textSize="50sp"
            android:textIsSelectable="false"
            android:gravity="center" />
     
    </RelativeLayout>
    Merci de votre aide.

    Pierre

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Elle fonctionne en mode portrait, mais elle plante en mode paysage.
    Quel est le message d'erreur dans le logcat ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    le logcat me raconte ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    12-10 15:50:53.570 24362-24362/com.example.Lampe_Flash E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.Lampe_Flash/com.example.Lampe_Flash.MainActivity}: java.lang.RuntimeException: Fail to connect to camera service
                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
                                                                                 at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3576)
                                                                                 at android.app.ActivityThread.access$800(ActivityThread.java:140)
                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                 at android.os.Looper.loop(Looper.java:137)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:4921)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                                                                                 at dalvik.system.NativeStart.main(Native Method)
                                                                              Caused by: java.lang.RuntimeException: Fail to connect to camera service
                                                                                 at android.hardware.Camera.native_setup(Native Method)
                                                                                 at android.hardware.Camera.<init>(Camera.java:387)
                                                                                 at android.hardware.Camera.open(Camera.java:364)
                                                                                 at com.example.Lampe_Flash.MainActivity.onCreate(MainActivity.java:33)
                                                                                 at android.app.Activity.performCreate(Activity.java:5206)
                                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)*
                                                                                 at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3576)*
                                                                                 at android.app.ActivityThread.access$800(ActivityThread.java:140)*
                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)*
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:99)*
                                                                                 at android.os.Looper.loop(Looper.java:137)*
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:4921)*
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                                 at java.lang.reflect.Method.invoke(Method.java:511)*
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)*
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)*
                                                                                 at dalvik.system.NativeStart.main(Native Method)*
    NOTA, quand je maintiens le smartphone en mode portrait, j'allume et j'éteints la LED sans que l'application plante.

    Cordialement.

    Pierre

  4. #4
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Je viens de faire un autre essai : j'active mon application alors que je suis en mode paysage : cela fonctionne aussi. Mais si je passe maintenant en mode portrait, ça plante.

    En conclusion, mon appli fonctionne dans les deux modes, sauf si je change de mode en cours d'application.

    Cordialement.

    Pierre

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu fais un mais je ne vois nulle part de .

    De fait quand tu tourne ton application , l'activity se recréer mais ne peut plus accéder au service Camera car déjà ouvert et non fermé dans l'inclinaison précédente.

    Il faut faire ton release() au plus tôt dès que tu n'a pas plus besoin du service Camera. A défaut tu peux le faire dans le onStop();
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par grunk Voir le message
    ...

    Il faut faire ton release() au plus tôt dès que tu n'a pas plus besoin du service Camera. A défaut tu peux le faire dans le onStop();
    C'est vrai, j'avais complètement oublié cette recréation à la rotation du smartphone.

    Merci beaucoup, ça fonctionne.

    Cordialement.

    Pïerre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/04/2015, 23h32
  2. Mode portrait et mode paysage
    Par Loufi dans le forum 4D
    Réponses: 4
    Dernier message: 28/12/2010, 12h22
  3. [CSS] Impression en mode paysage
    Par joquetino dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 25/08/2005, 11h54
  4. Mode paysage !!
    Par Shandler dans le forum MFC
    Réponses: 2
    Dernier message: 05/04/2005, 21h54
  5. imprimer fichier en mode paysage
    Par Le Veilleur dans le forum C++Builder
    Réponses: 13
    Dernier message: 10/02/2005, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo