Bonjour,

Voici mon problème:

Je cherche à couper un mediaplayer lorsque l'application quitte le foregroung (retour ou home), mais le mediaPlayer que je lance se trouve dans un autre fichier .java
Il faudrait que je puisse invoquer une méthode situer dans l'autre fichier .java mais il y a une icohérence entre static et non static méthode. Comment je peux faire?

Voici le code, MainActivity.class:

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
 
MediaPlayer mp = null;
 
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView(); // ici la webView qui accède au fichier audio via une page HTML
 
    }
    @Override
    public void onPause(){
        super.onPause();
        if(mp != null){
            mp.stop();
            //mp.release();
        }
    }
Et celui de WebAppInterface:

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
    Context mContext;
 
    MediaPlayer mp = null;
 
    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }
 
 
    //Play an audio file from the webpage
    @JavascriptInterface
    public void playAudio(String aud) { //String aud - file name passed
        //from the JavaScript function
 
 
        try {
            stop();
            mp = new MediaPlayer();
 
            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mp.setDataSource(aud);
            mp.prepareAsync();
            mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            mp = null;
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @JavascriptInterface
    public void stopAudio() {
        stop();
    }
 
    public void stop(){
        if(mp != null){
            mp.stop();
            //mp.release();
        }
Merci d'avance