报警与不工作的片段广播接收器 [英] Alarm with broadcast receiver not working on Fragment

查看:156
本文介绍了报警与不工作的片段广播接收器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作有一个片段的应用程序,其中一个片段包括报警功能。
为此,我已经使用广播接收器,但不明白为什么它不工作:
这里是code,我工作的PC不是一个移动设备

I'm working on a app with Fragments, One of the fragment includes alarm functionality. For this I have used broadcast receiver but don't understand why its not working: Here is the code, I'm working on PC "not a Mobile device"

public class SchedulerListFragment extends Fragment {
    PendingIntent pendingIntent;
    AlarmManager alarmManager;
    BroadcastReceiver mReceiver;
    EditText ethr,etmin,etsec;
    int result = 1;
    int hr = 0;
    int min = 0;
    int sec = 0;
    Button alarm;
    IntentFilter filter1;

    private void RegisterAlarmBroadcast()
    {       
        mReceiver = new BroadcastReceiver()
        {
           // private static final String TAG = "Alarm Example Receiver";
            @Override
            public void onReceive(Context context, Intent intent)
            {
                Toast.makeText(context, "Alarm time has been reached", Toast.LENGTH_LONG).show();
            }
        };

        getActivity().registerReceiver(mReceiver, new IntentFilter("com.example.lightcontrolsystem.SchedulerFragment.class") );
        pendingIntent = PendingIntent.getBroadcast( getActivity(), 0, new Intent("sample"),0 );
        alarmManager = (AlarmManager)(getActivity().getSystemService( Context.ALARM_SERVICE ));
    }


    /*
    private void UnregisterAlarmBroadcast()
    {
        alarmManager.cancel(pendingIntent); 
        getBaseContext().unregisterReceiver(mReceiver);
    }
*/

    Button.OnClickListener buttonalarmOnClickListener = new Button.OnClickListener() {

        public void onClick(View v) {
             String shr = ethr.getText().toString();
                if(shr.equals(""))
                {
                    hr = 0;
                }
                else
                {
                    hr = Integer.parseInt(ethr.getText().toString());
                    hr=hr*60*60*1000;
                }

                String smin = etmin.getText().toString();
                if(smin.equals(""))
                {
                    min = 0;
                }
                else
                {
                     min = Integer.parseInt(etmin.getText().toString());
                     min = min*60*1000;

                }

                String ssec = etsec.getText().toString();
                if(ssec.equals(""))
                {
                    sec = 0;
                }
                else
                {
                     sec = Integer.parseInt(etsec.getText().toString());
                     sec = sec * 1000;

                }

                result = 50*1000; //hr+min+sec;
                Toast.makeText(getActivity(), "Alarm SET", Toast.LENGTH_LONG).show();
                alarmManager.set( AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + result , pendingIntent);
        //      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), result , pendingIntent); 


        }
    }; 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view=inflater.inflate(R.layout.scheduler_list, container,false);
        ethr = (EditText) view.findViewById(R.id.ethr);
        etmin = (EditText) view.findViewById(R.id.etmin);
        etsec = (EditText) view.findViewById(R.id.etsec);
        alarm = (Button) view.findViewById(R.id.setAlarm);
        alarm.setOnClickListener(buttonalarmOnClickListener);


        RegisterAlarmBroadcast();

                return view; 
    }
}

问题1:不产生报警
我怀疑我还没有注册广播接收器正确

Problem1: Alarm not generated I suspect I have not registered Broadcast receiver properly

  getActivity().registerReceiver(mReceiver, new IntentFilter("com.example.lightcontrolsystem.SchedulerFragment.class") );
        pendingIntent = PendingIntent.getBroadcast( getActivity(), 0, new Intent("sample"),0 );
        alarmManager = (AlarmManager)(getActivity().getSystemService( Context.ALARM_SERVICE ));

Problem2:
提起的EditText没有显示任何键盘或响应从任何PC我钥匙。不知道为什么。

Problem2: EditText filed not showing any keypad or responding to any of my keys from PC. Don't know Why

在此先感谢

推荐答案

?试试这个

AlarmReceiver.java

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm time has been reached", Toast.LENGTH_LONG).show();
    }
}

在注册 AndroidManifest

<receiver android:name=".AlarmReceiver" android:process=":remote"/>

设置闹钟在SchedulerListFragment.java

set the alarm in your SchedulerListFragment.java

Intent intent = new Intent(getActivity(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);

AlarmManager alarmManager = (AlarmManager)(getActivity().getSystemService( Context.ALARM_SERVICE ));
alarmManager.set( AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + result , pendingIntent);

如果你愿意,你可以注册广播接收器动态使用 registerReceiver()通过传递一个空的IntentFilter 。这也将工作没有任何问题。

If you wish, you may register the BroadcastReceiver dynamically using registerReceiver() by passing an empty IntentFilter. That will also work without any issues.

这篇关于报警与不工作的片段广播接收器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆