У меня есть 3 радиогруппы в пользовательском представлении списка. Мне нужно включить первую радиогруппу с 9 утра до 13 часов и отключить после этого. Вторая радиогруппа должна быть включена с 13:00 до 20:00 и отключена после, а третья радиогруппа должна быть включена с 20:00 до 8:00 и отключена после. Как я могу добиться того же ??
BroadCastReceiver.java
public class BackgroundService extends Service {
private static BroadcastReceiver mTickReceiver;
public BackgroundService()
{
}
@Override
public IBinder onBind(Intent arg0)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onCreate()
{
registerReceiver();
}
@Override
public void onDestroy()
{
unregisterReceiver(mTickReceiver);
mTickReceiver = null;
}
private void registerReceiver()
{
mTickReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) // this will fire every minute
{
String shift = null;
DateFormat df = new SimpleDateFormat("HH:mm");
String currentTimeString = df.format(Calendar.getInstance().getTime());
Log.d("CurrentTime",currentTimeString);
int currentTime=convertTimeToMinutes(currentTimeString);
Log.d("CurrentTime1", String.valueOf(currentTime));
Intent i=new Intent();
i.setAction("TimeData");
if(currentTime>=480 && currentTime<780) {
shift = "Shift1";
}
else if(currentTime>=780 && currentTime<1200) {
shift = "Shift2";
}
else if(currentTime>=1200 || currentTime<480) {
shift = "Shift3";
}
Log.d("TAG1",shift);
intent.putExtra("Shift",shift);
sendBroadcast(i);
}
};
IntentFilter filter = new IntentFilter(Intent.ACTION_TIME_TICK); // this will broadcast Intent every minute
registerReceiver(mTickReceiver, filter);
}
private int convertTimeToMinutes(String s) {
String[] hourMin = s.split(":");
int hour = Integer.parseInt(hourMin[0]);
int mins = Integer.parseInt(hourMin[1]);
int hoursInMins = hour * 60;
return hoursInMins + mins;
}
}
В методе Activity onCreate я вызываю BroadcastReceiver следующим образом
Intent i=new Intent(this, BackgroundService.class);
startService(i);
IntentFilter filter = new IntentFilter("TimeData");
registerReceiver(new MyBroadcastReceiver(),filter);
Класс BroadCastReceiver в действии выглядит следующим образом
class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// GET BROADCAST FROM RECEIVER IN THE BACKGROUND SERVICE CLASS
Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_SHORT).show();
Log.d("ActionData",intent.getAction()); // this works, it is checked
if (intent.getAction() == "TimeData") {
String shiftValue1= intent.getStringExtra("Shift");
Log.d("shiftValue1",shiftValue1);
}
}
}
Ошибка, которую я получаю, это
вот как вы проверяете время каждую минуту: