我试图在我的Android Studio 1.4上创建一个警报

我试图在我的Android Studio 1.4上创建一个警报,android,performance,alarmmanager,android-alarms,Android,Performance,Alarmmanager,Android Alarms,试图创建一个简单的警报。在这里通读Android Dev的文章 我的想法是,即使在应用程序未运行且手机处于睡眠模式时,闹钟也会响。我尝试了YT上提供的所有教程和我可以在线搜索的所有答案,但使用这些示例中的任何一个,我都无法在手机处于睡眠状态时让闹钟响起来。我尝试在清单上添加唤醒权限,并使用WakefulBroadcastReceiver而不是简单的广播接收器,但没有帮助。只有当应用程序在后台运行时,警报才会熄灭。这是我的闹钟功能 public void _setAlarm() { L

试图创建一个简单的警报。在这里通读Android Dev的文章

我的想法是,即使在应用程序未运行且手机处于睡眠模式时,闹钟也会响。我尝试了YT上提供的所有教程和我可以在线搜索的所有答案,但使用这些示例中的任何一个,我都无法在手机处于睡眠状态时让闹钟响起来。我尝试在清单上添加唤醒权限,并使用WakefulBroadcastReceiver而不是简单的广播接收器,但没有帮助。只有当应用程序在后台运行时,警报才会熄灭。这是我的闹钟功能

 public void _setAlarm()
{
    Long alerttime = new GregorianCalendar().getTimeInMillis()+60*1000;
    Intent _alarmIntent = new Intent(this, Alert.class);
    ArrayList<String> _displayItem = _displayItem();
    _alarmIntent.putStringArrayListExtra("Text1", _displayItem);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, alerttime, PendingIntent.getBroadcast(this,1,
            _alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}
public void\u setAlarm()
{
Long alerttime=new GregorianCalendar().getTimeInMillis()+60*1000;
意向_alarmIntent=新意向(此为Alert.class);
ArrayList\u displayItem=\u displayItem();
_alarmIntent.putStringArrayListExtra(“Text1”,_displayItem);
AlarmManager AlarmManager=(AlarmManager)getSystemService(Context.ALARM\u服务);
alarmManager.set(alarmManager.RTC_唤醒、alerttime、PendingEvent.getBroadcast(此,1,
_alarmIntent,PendingEvent.FLAG_UPDATE_CURRENT));
}
这是警报类

public class Alert extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    //PendingIntent _alarmIntent = PendingIntent.getActivity(context,0, new Intent(context,Alarm.class),0);
    Intent _alarmIntent = new Intent (context, Alarm.class);
    ArrayList<String> data = intent.getStringArrayListExtra("Text1");
    _alarmIntent.putStringArrayListExtra("Text1",data);
    Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder _alarmBuilder = new NotificationCompat.Builder(context)
            .setContentTitle("Get up")
            .setContentText("Get Up")
            //.setSound(uri)
            .setTicker("SonsofGun")
            .setSmallIcon(R.drawable.edit_icon);
    TaskStackBuilder tStackBuilder = TaskStackBuilder.create(context);
    tStackBuilder.addParentStack(Alarm.class);
    tStackBuilder.addNextIntent(_alarmIntent);
    PendingIntent _alarmPIntent = tStackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
    _alarmBuilder.setContentIntent(_alarmPIntent);
    _alarmBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND);
    //_alarmBuilder.setAutoCancel(true);
    NotificationManager _alarmManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    _alarmManager.notify(1, _alarmBuilder.build());
}
公共类警报扩展广播接收器{
@凌驾
公共void onReceive(上下文、意图){
//PendingEvent _alarmIntent=PendingEvent.getActivity(上下文,0,新意图(上下文,Alarm.class),0);
意向_alarmIntent=新意向(上下文,Alarm.class);
ArrayList data=intent.getStringArrayListExtra(“Text1”);
_alarmIntent.putStringArrayListExtra(“Text1”,数据);
Uri Uri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_通知);
NotificationCompat.Builder\u alarmBuilder=新建NotificationCompat.Builder(上下文)
.setContentTitle(“起床”)
.setContentText(“起床”)
//.setSound(uri)
.setTicker(“SonsofGun”)
.setSmallIcon(R.drawable.edit_图标);
TaskStackBuilder tStackBuilder=TaskStackBuilder.create(上下文);
tStackBuilder.addParentStack(Alarm.class);
tStackBuilder.addnextint(_alarmIntent);
PendingEvent _alarmPIntent=tStackBuilder.GetPendingEvent(0,PendingEvent.FLAG_UPDATE_CURRENT);
_alarmBuilder.setContentIntent(_alarmPIntent);
_alarmBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND);
//_alarmBuilder.setAutoCancel(真);
NotificationManager\u alarmManager=(NotificationManager)context.getSystemService(context.NOTIFICATION\u服务);
_alarmManager.notify(1,_alarmBuilder.build());
}
下面是我的报警活动和自定义可扩展列表

public class Alarm extends AppCompatActivity {
TextView _item, _title;
HashMap<String,List<String>> _itemDisplay;
List<String> _list;
ExpandableListView _expLV;
expLVAdapter _expAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);


    //Adding font to notification title---------------------------------------------------------
    _title = (TextView) findViewById(R.id.textViewNotificationTitle);
    Typeface amaticTF = Typeface.createFromAsset(getAssets(), "Amatic-Bold.ttf");
    _title.setTypeface(amaticTF);

    // End of notification title----------------------------------------------------------------

    _expLV = (ExpandableListView) findViewById(R.id.expListView);
    ArrayList<String> _displayItem = getIntent().getStringArrayListExtra("Text1");
    _itemDisplay = getInfo(_displayItem);
    _list = new ArrayList<String>(_itemDisplay.keySet());
    _expAdapter = new expLVAdapter(this,_itemDisplay,_list);
    _expLV.setAdapter(_expAdapter);
}
//Adding values to the expandable list view
public static HashMap<String,List<String>> getInfo(ArrayList<String> _displayItem){
    HashMap<String, List<String>> _itemList = new HashMap<String,List<String>>();
    int items = _displayItem.size();
    for(int i = 0; i < items; i++) {
        String _itemName = _displayItem.get(i);
        List<String> itemName = new ArrayList<>();
        itemName.add("some text");
        _itemList.put(_itemName,itemName);
    }
    return _itemList;
}}
公共类报警扩展了AppCompative活动{
文本视图_项,_标题;
HashMap\u项目显示;
列表(u List),;
可扩展列表视图_expLV;
expLVAdapter\u expAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_报警);
//向通知标题添加字体---------------------------------------------------------
_title=(TextView)findViewById(R.id.textViewNotificationTitle);
Typeface amaticTF=Typeface.createFromAsset(getAssets(),“Amatic Bold.ttf”);
_标题.设置字体(amaticTF);
//通知结束标题----------------------------------------------------------------
_expLV=(ExpandableListView)findViewById(R.id.expListView);
ArrayList_displayItem=getIntent().getStringArrayListExtra(“Text1”);
_itemDisplay=getInfo(\u displayItem);
_list=newarraylist(_itemsdisplay.keySet());
_expAdapter=new expLVAdapter(此、\u itemsdisplay、\u list);
_expLV.setAdapter(_expAdapter);
}
//向可展开列表视图添加值
公共静态HashMap getInfo(ArrayList\u displayItem){
HashMap_itemList=新HashMap();
int items=_displayItem.size();
对于(int i=0;i
请帮助我创建一个简单的闹钟,没有什么特别的,它可以在特定时间唤醒手机并触发活动,即使手机处于睡眠状态且应用程序已关闭。有人说,如果应用程序已关闭,闹钟将永远不会触发。但任何安卓手机上的简单闹钟都会在任何时候发出呃,应用程序是否正在运行。所以它应该可以工作。我的minimumAPI级别是11