Soru & Cevap

Shared Preferences Veri Ekleme

17.02.2015 - 04:38

Merhaba,

Android ile bir radyo uygulaması yazdım. Radyodan çıkıldığında çalma işleminin devam etmesi için bir android service yazdım. Uygulamadan geri tuşu ile çıkıldığında "Shared Preferences" içerisine "Pause" şeklinde bir veri ekliyorum ve radyo çalışmaya devam ediyor. Uygulama tekrar açıldığında "Shared Preferences" içerisine eklediğim verinin değerine göre "Play" ya da "Pause" butonunu görüntülüyorum. Uygulama sorunsuz şekilde çalışıyor. Uygulama son uygulamaların listelendiği kısımdan kapatılırsa "Shared Preferences" içerine veri ekleyemediğim için(veri ekleme işini yazmış olduğum android service içerisinde yapıyorum) uygulamaya tekrar giriş yaptığımda "pause" butonu gözüküyor. 

Yazmış olduğum android servis kodu aşağıdaki gibidir. Yardımlarınızı bekliyorum.

public class RadioService extends Service {
    private MediaPlayer player;

 

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onDestroy() {
        stopPlaying();
    }
    
    @Override
    public void onTaskRemoved(Intent rootIntent) {
        stopPlaying();
    }

    @Override
    public void onStart(Intent intent, int startId) {
        initializeMediaPlayer();
        startPlaying();
    }

    private void initializeMediaPlayer() {
        player = new MediaPlayer();
        try {
            player.setDataSource(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) {
                Log.i("Buffering", "" + percent);
            }
        });
    }

    private void startPlaying() {
        player.prepareAsync();
        player.setOnPreparedListener(new OnPreparedListener() {
            public void onPrepared(MediaPlayer mp) {
                player.start();
            }
        });
    }

    private void stopPlaying(){
        if (player.isPlaying()){
            player.stop();
            player.release();
            initializeMediaPlayer();
        }
    }
}

65 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-31404-1421919825.png
muhcob
18.02.2015 - 09:36

Bir activity birden fazla fragment kullanıyorum. Radio Dinleme sayfası da Fragment. "MainActivity" içerisinde back tuşuna basıldığında söylediğin gibi "onDestroy()" metodu çalışıyor. Fakat Uygulamadan çıkıldığında radyo çalmaya devam ettiği için dediğin gibi bir şey yaparsam uygulamaya tekrar dönüş yaptığımda radyo çaldığı halde "Pause" butonu aktif olması gerekirken "Play" butonu aktif oluyor. Normalde uygulamadan çıkıldığında zaten ben Shared Preferences'e veri ekliyorum ve tekrar uygulamaya girdiğinde "Play" ya da "Pause" durumunu kontrol edebiliyorum. Fakat menü tuşuna bezer bir kare tuşuna basılınca açık programlar görünüyor. Buradan uygulamayı kapatırsam "MainActivity" içerisindeki "onDestroy()" metoduna zaten girmiyor. Hatta yazmış olduğum servis içerisindeki "onDestroy()" metoduna bile girmiyor. 

Profile picture for user omerfarukkoloğlu
omerfarukkoloğlu
18.02.2015 - 02:00

Uygulama içinde onDestroy methodunu override edebilirsin. SharedPreference e veri ekleyebilirsin. Uygulama listesinden kapansa dahi çalışır kodun.

Aşağıdaki gibi yapabilirsin.

[code]

@Override
    public void onDestroy()
    {

                SharedPreferences mSharedPrefs = getSharedPreferences("settingsXml", MODE_PRIVATE);
                SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
                mPrefsEditor.putString("ButonDurumu", "PAUSE");
                mPrefsEditor.commit();

        super.onDestroy();
    }

[/code]