Merhaba ben içerisinde 6 tane radyo barındıran bir radyo uygulaması hazırlıyorum. Bunun için uygulamam arka plana da da çalıssın diye servis kullandım ancak örneğin arama geldiginde radyo sonlanmıyor çalmaya devam ediyor. Acaba arama geldiginde servisi geçici olarak nasıl sonlandırır, arama ve konusma bittiginde tekrar çalmaya devam etmesini sağlayabilirim.

Cevaplarınız için şimdiden teşekkür ederim.

soruldu: 30 Eyl '13, 06:42

coder86's gravatar image

coder86
220223035
cevap kabul oranı: 0%


ÇOK MERAK EDİYORUM ACABA NEDEN -1 VERDİN @dkyc

permanent link

cevaplandı: 02 Eki '13, 03:57

lastarabos's gravatar image

lastarabos
1.8k122742
cevap kabul oranı: 29%

1

Broadcast recevierlari denediniz mi ?

(30 Eyl '13, 14:35) olkunmustafa olkunmustafa's gravatar image
-1

lastabos yardımınız icin tsk ederim. Ancak burdaki metodları uyguladıgımda sanal cihaz da arama yaptırıyorum fakat hata verip programı sonlandırıyor. olkunmustafa broadcast denedım ama hata alıyorum.

(01 Eki '13, 10:51) coder86 coder86's gravatar image

Broadcastrecevier da ne hatasi aliyorsunuz. Telefon acilma kapanma ve servis baslatma islemleriniz de baska bir hata vardir. Biraz kod paylasir misiniz.

(01 Eki '13, 14:44) olkunmustafa olkunmustafa's gravatar image

Senin için Broadcastrecevier ile servis başlatma ve servis sonlandırma projesi hazıladım. Kodları takip edersen nasıl çalştığını anlarsın.

İlk önce Mainactivity.java dosyamız ile uygulammız başlıyor. Burada ne olacağına kendin karar verirsin. Recevier java dosyamızda ise telefon durumunu dinliyoruz.

if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) Metodu telefon çaldığı anda devreye giriyor ve servisi oluşturup başlatıyor. Burada sen istersen Servisi sonlandırırsın.

(state.equals(TelephonyManager.EXTRA_STATE_IDLE) metoduyla telefon meşgule verildiğinde devreye giriyor ve servisi sonlandrıyor.

En Son androidmanifest dosyasında gerekli ayarları yapmayı unutma.

Umarım yardımcı olur.

MainActivity.java package com.medyasef.finishservice;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Receviers.java

package com.medyasef.finishservice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;

/**
 * Created by beto on 02.10.2013.
 */
public class Receviers extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent myIntent = new Intent(context,ServiceExample.class);
        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        if(state==null)
            return;
        if(state.equals(TelephonyManager.EXTRA_STATE_RINGING))
        {
            context.startService(myIntent);
        }
        if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
            context.stopService(myIntent);
        }

    }
}

ServiceExample.java

package com.medyasef.finishservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

/**
 * Created by beto on 02.10.2013.
 */
public class ServiceExample extends Service {
    private boolean isRunning = true;
    private static String TAG = "Bilgi";
    Updater updater;

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

    @Override
    public void onCreate() {
        Toast.makeText(ServiceExample.this,"Servis Oluşturuldu",Toast.LENGTH_SHORT).show();
        updater = new Updater();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(ServiceExample.this,"Servis Basladi",Toast.LENGTH_SHORT).show();
        if(!isRunning){
            updater.start();
            isRunning = true;
        }
        return Service.START_STICKY;
    }

    @Override
    public void onDestroy() {
        Toast.makeText(ServiceExample.this,"Servis Sonlandı",Toast.LENGTH_SHORT).show();
        if(isRunning){
            updater.interrupt();
            isRunning=false;
        }
    }

    private class Updater extends Thread {
        private static final int Delay = 1000;
        @Override
        public void run() {
            while(isRunning){
                try {
                    Log.d(TAG,"log is update");
                    Thread.sleep(Delay);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.medyasef.finishservice"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="16" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.medyasef.finishservice.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".ServiceExample"></service>
        <receiver android:name=".Receviers" android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>
permanent link

cevaplandı: 02 Eki '13, 15:22

olkunmustafa's gravatar image

olkunmustafa
582222934
cevap kabul oranı: 26%

Olkun Mustafa çok tesekkür ederim calıstıgım icin sayfaya girip bakamadım ilgin alakan ve yardımın icin tesekkür ederim. Haberleri sana bildiririm.

Saygılar Dostum.

permanent link

cevaplandı: 05 Eki '13, 13:59

coder86's gravatar image

coder86
220223035
cevap kabul oranı: 0%

1

Rica ederim tskildigin yer olursa yine paslasiriz. Umarim isine yarar

(05 Eki '13, 16:28) olkunmustafa olkunmustafa's gravatar image

Dostum gönderdiğin reveicer işe yaradı, idle durumunda ben konusma bittikten sonra otomatik olarak başlasın diye servisi start ettim. Buraya kadar herşey normal ancak, mesela ben programı kapattıgımda kendini otomatik olarak başlatıyor, birde yeni bir arama geldi diyelim program kapalı, arama bittikten sonra yada cağrı reddedildiginde yine kendini otomatik başlatıyor.Bende idle durumunda servisi stop ladım yani manuel olarak calısacak. Birde birşey daha danısmak istiyorum sana. Ben ana radyo dısında 5 radyo daha calıstırıcam uygulama icinde ve her radyonun ayrı bır sayfası(layout) var. Her radyonun kendi sayfasına bir toggle button ve seekbar koydum.Amacım kullanıcı hangı radyoyu dınlemek isterse listview den secsin ve dinlesin. Bunun icin bir tane servisim var ve servis icine radyoların url adreslerini string dizi ile yerlestirdim.

Şimdi sorum şu ben tek bir servisten nasıl diger radyolara baglantı kurucam. Örnegin bir radyo calıyor, ancak kullanıcı baska bir radyoya gecmek istedi o anda calan radyoyu stoplayıp secileni nasıl oynatabilirim ?

Biraz uzun oldu farkındayım sürçilisan ettiysek affola. Bu konuda tune ın programı benım yapmak istedigimi özetliyor.Google da aratacaktım ama anahtar kelime olarak ne girecem bilemedim onun ıcın sana yazdım.

saygılar dostum

permanent link

cevaplandı: 11 Eki '13, 11:42

coder86's gravatar image

coder86
220223035
cevap kabul oranı: 0%

Merhabalar. Servisin işe yaramsına sevindim.

Şimdi soruları elimden geldiğince cevap vermeye çalışayım. Programı kapattığın da servisin çalışmasının sebebi yayın alıcısının statik tanımlanması. Yani android manifest dosyasında tanımladık ne dinleyeceğimizi. Bunu çözmek için servisin çalıştığı sayfa içine bir boolean tanımlayıp servis oncreate ile çalıştığında ancak dinlediğimiz yayın için işlem yaparız. Servisi kapatırken de ondestroy metodunda bu boolean değerini false yaparız. Yani uygulama gelen aramaları yine dinler ancak servis çalışmadığı için işlem yapmaz. Umarım anlatabilmişimdir.

  1. sorunu çözmek için biraz daha detaya ihtiyacım var. Bİraz kod paylaşırsan yardımcı olmaya çalışırım.

İyi çalışmalar kolay gelsin.

permanent link

cevaplandı: 15 Eki '13, 15:34

olkunmustafa's gravatar image

olkunmustafa
582222934
cevap kabul oranı: 26%

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

Soruldu: 30 Eyl '13, 06:42

Görüntüleme: 3,385 kez

Son güncelleme: 22 Eki '13, 13:06

powered by BitNami OSQA