• 0

كيف أتمكن من جعل تطبيق اندرويد ينبه كل مدة معينة؟

أود إدراج خاصية التنبيه مثل تلك الموجود على المنبهات Alarm داخل تطبيق، شريطة أن يقوم التطبيق بهذه العملية كل مدة زمنية احددها أنا، مثلا كل 6 ساعات، فكيف ذلك؟

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


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

يحتوي هذا المثال على العديد من الامتيازات، فيما يتعلق باستعمال ذاكرة الجهاز، وكذا عدم استهلاك البطارية:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.repeatingalarm"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.repeatingalarm.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>
        <receiver android:name="MyBroadcastReceiver" >
        </receiver>
    </application>

</manifest>

 

Layout.xml file:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
 <EditText
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="28dp"
        android:ems="10"
        android:hint="Number of seconds"
        android:inputType="numberDecimal" />
    <Button

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="95dp"
        android:onClick="startAlert"
        android:text="Make repeat" />

   

</RelativeLayout>


MyBroadcastReceiver java class:

/**
 * 
 */
package com.example.repeatingalarm;

import java.util.Date;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * @author Prabu
 *
 */
public class MyBroadcastReceiver  extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  Toast.makeText(context, new Date().toString(),
    Toast.LENGTH_SHORT).show();
 }
}

Activity java class:

باستعمال setRepeating

package com.example.repeatingalarm;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

/**
 * @author Prabu
 *
 */
public class MainActivity extends Activity {

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

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }

 public void startAlert(View view) {
  EditText text = (EditText) findViewById(R.id.time);
  int i = Integer.parseInt(text.getText().toString());
  Intent intent = new Intent(this, MyBroadcastReceiver.class);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(
    this.getApplicationContext(), 234324243, intent, 0);
  AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
    + (i * 1000), (i * 1000), pendingIntent);
  /*alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
    + (i * 1000), 8000, pendingIntent);*/
  Toast.makeText(this, "Starting alarm in " + i + " seconds",
    Toast.LENGTH_LONG).show();
 }

}

النتيجة:

1.png

باستعمال setInexactRepeating:

package com.example.repeatingalarm;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

/**
 * @author Prabu
 *
 */
public class MainActivity extends Activity {

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

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }

 public void startAlert(View view) {
  EditText text = (EditText) findViewById(R.id.time);
  int i = Integer.parseInt(text.getText().toString());
  Intent intent = new Intent(this, MyBroadcastReceiver.class);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(
    this.getApplicationContext(), 234324243, intent, 0);
  AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  /*alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
    + (i * 1000), (i * 1000), pendingIntent);*/
  alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
    + (i * 1000), 8000, pendingIntent);
  Toast.makeText(this, "Starting alarm in " + i + " seconds",
    Toast.LENGTH_LONG).show();
 }

}

النتيجة:

4.png

يمكنك تحميل المثال :RepeatingAlarm.zip

المصدر : How to make alarm repeat in Android code

تمّ تعديل بواسطة E.Nourddine

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


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

عندي سؤال بعيدآ عن الموضوع هل برمجة تطبيقات الاندرويد تحتاج الى شخص ذكي في الرياضيات

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


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

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

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

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


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

تسجيل الدخول

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


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