Soru & Cevap

Uygulama kapansada, servisi uyanık tutmak

13.07.2016 - 08:28

Merhaba,

Aracımda RK3066 işlemcili bir android multimedia cihazı var. Direksyon tuşlarım kendi uygulamaları için sağlıklı çalışıyor fakat spotify,turkcell muzik yada ttnet müzikte çalışmıyor.Bu nedenle benimde aklıma tuşları yakalayıp Media_Next tuşunu taklit etmek geldi ki başarılı oldum. Fakat şöyle bir sorunum var; oluşturduğum servis ve broadcast receiver uygulama ekrandayken sağlıklı çalışıyor fakat faklı bir uygulamaya geçtiğimde yada launcher ekranına geldiğimde çalışmıyor.

Yaptığım işlemler: "ACTION_BOOT_COMPLETED" ile açılışta servisimi, servisimlede tuşları yakalayacağım BroadcastReceiver register ediyorum. Ardından gelen tuşun değerine göre benim istediğim tuşu taklit ediyorum. Kodlarımda aşağıdak gibidir. Bu servisi uygulama kapalı olsa bile ayakta tutmak istiyorum. Önerilerinizi bekliyorum 


WscReceiver
 

package com.ford.swc;

import android.app.Instrumentation;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class WscReceiver extends BroadcastReceiver {
    public WscReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Settings.MTCBroadcastIrkeyUp)) {
            int keyCode = intent.getIntExtra("keyCode", 0);
            Toast.makeText(context, Integer.toString(keyCode), Toast.LENGTH_SHORT);
            if (Settings.MTCKeysPrev.contains(keyCode)) {
                Toast.makeText(context, "<<", Toast.LENGTH_SHORT);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Instrumentation inst = new Instrumentation();
                            inst.sendKeyDownUpSync(88);
                        } catch (Exception e) {
                        }
                    }
                }).start();
            }
            if (Settings.MTCKeysNext.contains(keyCode)) {
                Toast.makeText(context, ">>", Toast.LENGTH_SHORT);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Instrumentation inst = new Instrumentation();
                            inst.sendKeyDownUpSync(87);
                        } catch (Exception e) {
                        }
                    }
                }).start();
            }
        }
    }
}


AndroidServiceStartOnBoot
 

package com.ford.swc;

import android.app.Service;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.support.v7.app.AlertDialog;
import android.util.Log;

public class AndroidServiceStartOnBoot extends Service {
    public AndroidServiceStartOnBoot() {
    }
    WscReceiver wsr;
    @Override
    public void onCreate() {
        super.onCreate();
        // here you can add whatever you want this service to do
        Log.d("LOG", "AndroidServiceStartOnBoot");
        IntentFilter intf = new IntentFilter();
        intf.addAction(Settings.MTCBroadcastIrkeyUp);
        wsr = new WscReceiver();
        registerReceiver(wsr, intf);
    }

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


BroadcastReceiverOnBootComplete
 

package com.ford.swc;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.Toast;

public class BroadcastReceiverOnBootComplete extends BroadcastReceiver {
    public BroadcastReceiverOnBootComplete() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
            Toast.makeText(context, "BroadcastReceiverOnBootComplete Başladı", Toast.LENGTH_SHORT).show();
            Intent serviceIntent = new Intent(context, AndroidServiceStartOnBoot.class);
            context.startService(serviceIntent);
        }
    }
}

 

8 Görüntülenme

1 Cevap

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

Profile picture for user osmanasar933
osmanasar933
14.12.2019 - 05:55

https://www.tutorialspoint.com/how-to-run-an-android-service-always-in-background inceleyebilirsiniz