• 0

كيفية ضبط أكثر من منبه بأوقات مختلفة بالاندرويد استديو؟

ممكن مساعد في طريقة ضبط أكثر من منبه في اليوم وكل منبه يحمل إشعار معين للمستخدم هل يتم استخدام service او broadcast او الاثنين معا برجاء المساعدة

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

أعرف طريقة باستخدام service وbroadcast معا، وهي عن طريق استخدام BroadcastReceiver والتي ستعرض الإشعار وعن طريق AlarmManager التي سنستخدمها لجدولة أوقات العرض.

سيحتوي ملف MainActivity.java على التالي:

package com.example;
 
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
 
public class MainActivity extends Activity 
{
 
    private PendingIntent pendingIntent;
     
    @Override
    public void onCreate(Bundle savedInstanceState) 
     {
       
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
     
      Calendar calendar = Calendar.getInstance();
     
      calendar.set(Calendar.MONTH, 6);
      calendar.set(Calendar.YEAR, 2013);
      calendar.set(Calendar.DAY_OF_MONTH, 13);
 
      calendar.set(Calendar.HOUR_OF_DAY, 20);
      calendar.set(Calendar.MINUTE, 48);
      calendar.set(Calendar.SECOND, 0);
      calendar.set(Calendar.AM_PM,Calendar.PM);
     
      Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
      pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
     
      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
      alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
    
    } //end onCreate
}

بعد ذلك سننشئ ملف آخر باسم MyReceiver.java والذي سيحتوي على BroadcastReceiver كما في المثال التالي:

package com.example;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
 
public class MyReceiver extends BroadcastReceiver
{
      
    @Override
    public void onReceive(Context context, Intent intent)
    {
       Intent service1 = new Intent(context, MyAlarmService.class);
       context.startService(service1);
        
    }   
}

وحتى نتمكن من تشغيل الاشعارات حتى لو لم يكن التطبيق مفتوح سننشئ الخدمة - service خاصة بتطبيقنا كما في المثال التالي:

package com.example;
 
 
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
                            
 
public class MyAlarmService extends Service 
{
      
   private NotificationManager mManager;
 
    @Override
    public IBinder onBind(Intent arg0)
    {
       // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public void onCreate() 
    {
       // TODO Auto-generated method stub  
       super.onCreate();
    }
 
   @SuppressWarnings("static-access")
   @Override
   public void onStart(Intent intent, int startId)
   {
       super.onStart(intent, startId);
      
       mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
       Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);
     
       Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", System.currentTimeMillis());
       intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
       PendingIntent pendingNotificationIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT);
       notification.flags |= Notification.FLAG_AUTO_CANCEL;
       notification.setLatestEventInfo(this.getApplicationContext(), "AlarmManagerDemo", "This is a test message!", pendingNotificationIntent);
 
       mManager.notify(0, notification);
    }
 
    @Override
    public void onDestroy() 
    {
        // TODO Auto-generated method stub
        super.onDestroy();
    }
 
}

وسيكون محتوى ملف AndroidManifest.xml الخاص بشكل التطبيق كالتالي:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="10" />
 
    <uses-permission android:name="android.permission.WAKE_LOCK" />
      
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         
        <activity
            android:name="com.example.NextActivity"
            android:label="Next Screen">
        </activity>
         
        <service android:name=".MyAlarmService"
                 android:enabled="true" />
         
        <receiver android:name=".MyReceiver"/>
        
    </application>
</manifest>

أرجو أن يفيدك هذا المثال البسيط.

للمزيد من المعلومات حول استخدام BroadcastReceiver وAlarmManager أنصحك بالإطلاع على هذا الموضوع.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

اشكرك اخي الكريم علي مساعدتك لي ولكن انا ارغب بظبط المنبه بتوقيتين مختلفين وكل منبه يعطي اشعار ويكون التنبيه يوميا لكون شاكر مره تانيه لو ساعدتني

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن