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();
        }
    }
}

soruldu: 17 Şub '15, 09:48

mc44's gravatar image

mc44
1.1k222732
cevap kabul oranı: 42%


Uygulamanın diğer kaynak kodlarını bir yere upload edebilirseniz inceleyip yardım edebilirim.

permanent link

cevaplandı: 18 Şub '15, 05:51

Onur's gravatar image

Onur
6181317
cevap kabul oranı: 0%

@Onur;
Uygulamanın hepsini eklemek yerine fikir verilmesini istiyorum. Olayı yukarıda özetledim. Biraz daha açıklayayım. Uygulama açılıp "Play" butonuna basıldığında buton "Pause" görünümünü alıyor. Butonun durumunu "Shared Preferences"e ekliyorum. Uygulamadan back tuşu ile çıkış yapıldığında uygulama çalışmaya devam ediyor. Uygulama tekrar açıldığında "Shared Preferences"e eklediğim veri yardımıyla "Pause" butonu gözüküyor. Fakat radyo çalışırken "Samsung" telefonlarda orta tuşa basılı tutulunca açık programların göründüğü kısımdan uygulama kapatılınca

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


kodu çalışıyor ve uygulama kapatılıyor. Bu metot içerisinde "Shared Preferences"e veri eklemeye çalıştım ancak hiçbir işlem yapılmıyor. Bu işlemi nerede yapabilirim. Ya da böyle bir durumda neler yapılabilir?

(18 Şub '15, 07:17) mc44 mc44's gravatar image

Bildiğim kadarıyla Service'in lifecycle'ında onTaskRemoved() metodundan önce onDestroy () metodu çalışıyordu. Bu işlemi onDestroy() metodu içinde yap.

http://developer.android.com/reference/android/app/Service.html#onDestroy()

permanent link

cevaplandı: 26 Şub '15, 06:54

altan_518's gravatar image

altan_518
444127
cevap kabul oranı: 15%

"RadioService" sınıfı içerisinde yapmamı söylüyorsan onu denedim. Fakat hiçbir değişiklik olmadı. Radio'nun çalıştığı activity içerisinde bunu yaparsam kullanıcı her back tuşuna bastığında çalışıyor. Bu da benim işime gelmiyor.

(26 Şub '15, 06:57) mc44 mc44's gravatar image

SharedPreference 'e kaydettiğin değişkenleri static tanımlayıp, servisde bu static değişkenler üzerinde işlem yapmayı dene, işe yarayabilir.

ÖRN:

private static final String PREFS_NAME = "UserData"; 
private static final String PREFS_VALUE1 = "value1"; 
SharedPreferences preferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
value1 = preferences.getString(PREFS_VALUE1, "0");
permanent link

cevaplandı: 10 Mar '15, 07:38

altan_518's gravatar image

altan_518
444127
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×819
×17
×1
×1

Soruldu: 17 Şub '15, 09:48

Görüntüleme: 648 kez

Son güncelleme: 10 Mar '15, 07:38

powered by BitNami OSQA