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 :

Permission WAKE LOCK


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut Permission WAKE LOCK
    Bonjour,

    Application Multimédia Streaming Radio

    J'ai un petite souci avec mon application elle fonction très bien mais des que le téléphone passe en mode veille le streaming il s’arrête alors plus de musique! malgré j'ai rentrer tout les permissions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /
    Comment faire?

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il faut le demander le wake-lock la permission autorise juste à le demander au système...

    http://developer.android.com/referen...a.lang.String)

    Bien entendu dans le cas de radio-streaming, il faut utiliser "PARTIAL_WAKE_LOCK"

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Merci pour votre réponse.

    Mais j'ai toujours le même problème!
    j'ai insert la permission PARTIAL_WAKE_LOCK.

    merci a vous.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    On peut voir le code ?
    j'ai insert la permission PARTIAL_WAKE_LOCK.
    Il n'y a pas de "permission" PARTIAL_WAKE_LOCK...
    Il y a une permission WAKE_LOCK qui permet d'obtenir un WakeLock.
    Et dans notre cas, l'obtenir avec comme "level" PARTIAL_WAKE_LOCK.

    Au fait... une application de streaming radio qui demande un COARSE_LOCATION je vais hésiter très fortement à l'installer

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut permission-wake-lock
    Bonjour,
    Non malheureusement toujours le même problème.

    Merci a vous.

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Pourrais t on voir le manifest
    Ainsi que le code d'acquisition du lock ?

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Bonjour,

    Voila le contenue de AndroidManifest.xml
    Code xml : 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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.beanie.samples.streaming"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="3" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.SCREEN_DIM_WAKE_LOCK" />
    	<uses-permission android:name="android.permission.ACQUIRE_CAUSES_WAKEUP" />
    	<uses-permission android:name="android.permission.SCREEN_BRIGHT_WAKE_LOCK" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
     
     
     
     
        <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
            <activity android:name=".HomeActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
     
        </application>
     
    </manifest>

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Comment l'éditeur de permissions a-t-il pu laisser cela ?

    SCREEN_DIM_WAKE_LOCK, ACQUIRE_CAUSES_WAKEUP et SCREEN_BRIGHT_WAKE_LOCK ne sont pas des permissions connues !

    http://developer.android.com/referen...ermission.html


    Bon, et on peut voir le code d'acquisition du wake lock justement ?

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Bonjour,
    Excuse moi. voila,
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
     
    package com.beanie.samples.streaming;
     
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
     
    import android.app.Activity;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnBufferingUpdateListener;
    import android.media.MediaPlayer.OnPreparedListener;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;
    public class HomeActivity extends Activity implements OnClickListener {
     
        private final static String RADIO_STATION_URL = "http://173.192.70.150:7408/;stream.nsv";
     
        private ProgressBar playSeekBar;
     
        private Button buttonPlay;
     
        private Button buttonStopPlay;
     
        private Button buttonRecord;
     
        private Button buttonStopRecord;
     
        private MediaPlayer player;
     
        private InputStream recordingStream;
     
        private RecorderThread recorderThread;
     
        private boolean isRecording = false;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		initializeUIElements();
     
            initializeMediaPlayer();
        }
     
        private void initializeUIElements() {
     
            playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
            playSeekBar.setMax(100);
            playSeekBar.setVisibility(View.INVISIBLE);
     
            buttonPlay = (Button) findViewById(R.id.buttonPlay);
            buttonPlay.setOnClickListener(this);
     
            buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay);
            buttonStopPlay.setEnabled(false);
            buttonStopPlay.setOnClickListener(this);
     
            buttonRecord = (Button) findViewById(R.id.buttonRecord);
            buttonRecord.setOnClickListener(this);
     
            buttonStopRecord = (Button) findViewById(R.id.buttonStopRecord);
            buttonStopRecord.setOnClickListener(this);
        }
     
        public void onClick(View v) {
            if (v == buttonPlay) {
                startPlaying();
            } else if (v == buttonStopPlay) {
                stopPlaying();
            } else if (v == buttonRecord) {
                recorderThread = new RecorderThread();
                recorderThread.start();
     
                buttonRecord.setEnabled(false);
                buttonStopRecord.setEnabled(true);
            } else if (v == buttonStopRecord) {
                stopRecording();
            }
        }
     
        private void startPlaying() {
            buttonStopPlay.setEnabled(true);
            buttonPlay.setEnabled(false);
     
            playSeekBar.setVisibility(View.VISIBLE);
     
            player.prepareAsync();
     
            player.setOnPreparedListener(new OnPreparedListener() {
     
                public void onPrepared(MediaPlayer mp) {
                    player.start();
                    buttonRecord.setEnabled(true);
                }
            });
     
        }
     
        private void stopPlaying() {
            if (player.isPlaying()) {
                player.stop();
                player.release();
                initializeMediaPlayer();
            }
     
            buttonPlay.setEnabled(true);
            buttonStopPlay.setEnabled(false);
            playSeekBar.setVisibility(View.INVISIBLE);
            buttonRecord.setEnabled(false);
            buttonStopRecord.setEnabled(false);
            stopRecording();
        }
     
        private void initializeMediaPlayer() {
            player = new MediaPlayer();
            try {
                player.setDataSource(RADIO_STATION_URL);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
     
            player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
     
                public void onBufferingUpdate(MediaPlayer mp, int percent) {
                    playSeekBar.setSecondaryProgress(percent);
                    Log.i("Buffering", "" + percent);
     
                }
            });
        }
     
        @Override
        protected void onPause() {
            super.onPause();
            if (player.isPlaying()) {
                player.stop();
            }
        }
     
        private void startRecording() {
     
            BufferedOutputStream writer = null;
            try {
                URL url = new URL(RADIO_STATION_URL);
                URLConnection connection = url.openConnection();
                final String FOLDER_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()
                        + File.separator + "Songs";
     
                File folder = new File(FOLDER_PATH);
                if (!folder.exists()) {
                    folder.mkdir();
                }
     
                writer = new BufferedOutputStream(new FileOutputStream(new File(FOLDER_PATH
                        + File.separator + "sample.mp3")));
                recordingStream = connection.getInputStream();
     
                final int BUFFER_SIZE = 100;
     
                byte[] buffer = new byte[BUFFER_SIZE];
     
                while (recordingStream.read(buffer, 0, BUFFER_SIZE) != -1 && isRecording) {
                    writer.write(buffer, 0, BUFFER_SIZE);
                    writer.flush();
                }
     
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    recordingStream.close();
                    writer.flush();
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
     
        private void stopRecording() {
            buttonStopRecord.setEnabled(false);
            buttonRecord.setEnabled(true);
            try {
                isRecording = false;
                if (recordingStream != null) {
                    recordingStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        private class RecorderThread extends Thread {
            @Override
            public void run() {
                isRecording = true;
                startRecording();
            }
     
        };
    }

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Au risque de me répéter....
    Non seulement ça permet de garder l'alignement, mais aussi c'est plus lisible

    Sinon, ce n'est pas le bon code, il n'y a aucune référence à la classe WakeLock dans ce code là...
    Ce dont j'ai besoin c'est le code ou tu acquiers le lock et l'endroit ou tu le release.
    Ceci dit, ce devrait être là, dans startPlaying() et stopPlaying()...

Discussions similaires

  1. Gestion des permissions des fichiers sur NTFS
    Par gnu_thomas dans le forum MFC
    Réponses: 3
    Dernier message: 22/01/2004, 08h22
  2. Réponses: 8
    Dernier message: 14/11/2003, 22h51
  3. Row lock
    Par cassandra dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2003, 16h07
  4. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27
  5. Permission sur un dossier
    Par Bjorn dans le forum C
    Réponses: 6
    Dernier message: 25/06/2002, 12h56

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