报警与不工作的片段广播接收器
我的工作有一个片段的应用程序,其中一个片段包括报警功能。
为此,我已经使用广播接收器,但不明白为什么它不工作:
这里是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.