Как сохранить работу приемника вещания в фоновом режиме? - PullRequest
1 голос
/ 03 августа 2020

У меня есть радиоприемник. Но он разрушается, когда активность закрывается .... как мне оставить ее работать в фоновом режиме. Я знаю, что могу сделать это с помощью СЛУЖБЫ ... Но как мне реализовать это в службе ??

onStart:

 @Override
    protected void onStart() {
        super.onStart();
        
        private final BroadcastReceiver broadcast = new Broadcast();
        IntentFilter filter = new IntentFilter("Update Player");
        registerReceiver(broadcast, filter);
        isReceiverRegistered = true;
    }

Трансляция:

///BroadcastReceiver
    public class Broadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, final Intent intent) {

            String action = intent.getAction();

            if (action.equalsIgnoreCase("Update Player")) {
                position = intent.getIntExtra("position_2", -1);
                setTextView();
                byte[] image = getArt(PlayingScreen_List.get(position).getPath());
                if (image != null) {
                    Glide.with(getApplicationContext()).asBitmap()
                            .load(image)
                            .into(profile_image);
                } else {
                    Glide.with(getApplicationContext()).asBitmap()
                            .load(R.drawable.allsongs)
                            .into(profile_image);
                }
            }
         }
    }

OnPause:

@Override
protected void onPause() {
    super.onPause();

    if (isReceiverRegistered) {
        unregisterReceiver(broadcast);
        isReceiverRegistered = false;
    }
}

1 Ответ

0 голосов
/ 03 августа 2020

Вам нужно создать класс, который расширяется до Service. Добавьте к нему внутренний класс, расширяющийся до BroadcastReceiver. Посмотрите этот код.

public class MyService extends Service {
    BroadcastReceiver broadcastReceiver;

    public class MyReceiver extends BroadcastReceiver {    
        @Override
        public void onReceive(Context context, Intent intent) {
            // do something
        }

        // constructor
        public MyReceiver(){    
        }
    }

    @Override
    public void onCreate() {
         // create IntentFilter
         IntentFilter intentFilter = new IntentFilter();

         //add actions 
         intentFilter .addAction("com.example.NEW_INTENT");
         intentFilter .addAction("com.example.CUSTOM_INTENT");
         intentFilter .addAction("com.example.FINAL_INTENT");

         //create and register receiver
         broadcastReceiver = new MyReceiver();
         registerReceiver(broadcastReceiver, intentFilter );
    }
}

Добавьте в свой манифест этот код:

<receiver android:name="MyReceiver">
     <intent-filter>
        <action android:name="com.example.NEW_INTENT">
        </action>
        <action android:name="com.example.CUSTOM_INTENT">
        </action>
        <action android:name="com.example.FINAL_INTENT">
        </action>
     </intent-filter>
</receiver>
...