انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در ایجاد تایمر اتومات (آلارم تکررشونده) با استفاده از Reciver و Service

مشکل در ایجاد تایمر اتومات (آلارم تکررشونده) با استفاده از Reciver و Service

#1
سلام.
من قبلا هم تایمر (آلارم) ساختم به کمک دوستان برای یک تاریخ و زمان خاص.  لینک پایین. فقط از  reciver استفاده کردم.
[/url]
مشکل در ایجاد تایمر برای انجام یک کار در تاریخ و ساعت مشخص
[url=http://www.kelidestan.com/forum/showthread.php?tid=7192]

حالا مسئله اینه که تایمر و برای هر دقیقه میخوام تکرار کنم. حتی با بسته شدن برنامه و ریست شدن گوشی.
گرچه شبیه همون کار بالاست و فقط کافیه دقیقه ست بشه اما گاها جواب نمیده.

میخوام کمکم کنید تا اینبار اصولی تر و با استفاده از Reciver , service این کارو انجام بدم.

این کدها رو میذارم براتون. در حال حاضر هیچگونه الارمی هم نمیده.

توی مانیفست هم همه گزینه های لازم و تعریف کردم.
سرویس Myservice برای همیش اماده بودن و صدا زدن کلاسAlarmReciver .
رسیور AutoStart برای وقتی که گوشی ریست شد.
رسیور AlarmReciver برای ست کردن آلارم.

ممنون میشم از دوستانی که وارد هستند مشکل کار رو پیدا کنن و راهنماییم کنن.

Mainactivity
کد پی‌اچ‌پی:
public class MainActivity extends AppCompatActivity
{

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


 
       Intent intent = new Intent(thisMyService.class);
 
       startService(intent);
 
   }





Myservice
کد پی‌اچ‌پی:
public class MyService extends Service
{
 
   AlarmReciver alarmReciver = new AlarmReciver();
 
   public void onCreate()
 
   {
 
       super.onCreate();
 
   }

 
   @Override
    public int onStartCommand
(Intent intentint flagsint startId)
 
   {
 
       alarmReciver.setAlarm(this);
 
       return START_STICKY;
 
   }

 
   @Override
    public void onStart
(Intent intentint startId)
 
   {
 
       alarmReciver.setAlarm(this);
 
   }

 
   @Override
    public IBinder onBind
(Intent intent)
 
   {
 
       return null;
 
   }


AlramReciver
کد پی‌اچ‌پی:
public class AlarmReciver extends BroadcastReceiver
{
 
   @Override
    public void onReceive
(Context contextIntent intent)
 
   {
 
       PowerManager pm = (PowerManagercontext.getSystemService(Context.POWER_SERVICE);
 
       PowerManager.WakeLock wl pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK"");
 
       wl.acquire();

 
       // Put here YOUR code.
 
       Vibrator vibrator = (Vibratorcontext.getSystemService(Context.VIBRATOR_SERVICE);
 
       vibrator.vibrate(100);
 
       Toast.makeText(context"AlarmReciver !!!!!!!!!!"Toast.LENGTH_LONG).show(); // For example

 
       wl.release();
 
   }

 
   public void setAlarm(Context context)
 
   {
 
       AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
 
       Intent i = new Intent(contextAlarmReciver.class);
 
       PendingIntent pi PendingIntent.getBroadcast(context0i0);
 
       am.setRepeating(AlarmManager.RTC_WAKEUPSystem.currentTimeMillis(), 1000 30 1pi); // Millisec * Second * Minute
 
       Toast.makeText(context"Alarm set for 30 sec"Toast.LENGTH_LONG).show();
 
   }


AutoStart
کد پی‌اچ‌پی:
public class AutoStart extends BroadcastReceiver
{
 
   AlarmReciver alarmReciver = new AlarmReciver();
 
   @Override
    public void onReceive
(Context contextIntent intent)
 
   {
 
       if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
 
       {
 
           alarmReciver.setAlarm(context);
 
       }
 
   }

مانیفست :
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.m.m">

    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>


    <application
        android:allowBackup="true"
        android:icon="@drawable/logo2"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name="ir.m.m.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


    <receiver android:process=":remote" android:name="ir.m.m.AlarmReciver">

    </receiver>

    <receiver android:name="ir.m.m.AutoStart">
        <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED">
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </action>
        </intent-filter>
    </receiver>
    ...
    <service
        android:name="ir.m.m.MyService"
        android:enabled="true"
        android:process=":My_service" >
    </service>

</manifest> 
پاسخ
 سپاس شده توسط mjavad90 ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان