Simoh نشر 10 مايو 2016 أود إدراج خاصية التنبيه مثل تلك الموجود على المنبهات Alarm داخل تطبيق، شريطة أن يقوم التطبيق بهذه العملية كل مدة زمنية احددها أنا، مثلا كل 6 ساعات، فكيف ذلك؟ انشر على الشّبكات الاجتماعية رابط هذه المساهمة
0 E.Nourddine نشر 10 مايو 2016 (مُعدّل) يحتوي هذا المثال على العديد من الامتيازات، فيما يتعلق باستعمال ذاكرة الجهاز، وكذا عدم استهلاك البطارية: 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(); } } النتيجة: باستعمال 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(); } } النتيجة: يمكنك تحميل المثال :RepeatingAlarm.zip المصدر : How to make alarm repeat in Android code تمّ تعديل 10 مايو 2016 بواسطة E.Nourddine انشر على الشّبكات الاجتماعية رابط هذه المساهمة
0 msh97 نشر 11 مايو 2016 عندي سؤال بعيدآ عن الموضوع هل برمجة تطبيقات الاندرويد تحتاج الى شخص ذكي في الرياضيات انشر على الشّبكات الاجتماعية رابط هذه المساهمة
أود إدراج خاصية التنبيه مثل تلك الموجود على المنبهات Alarm داخل تطبيق، شريطة أن يقوم التطبيق بهذه العملية كل مدة زمنية احددها أنا، مثلا كل 6 ساعات، فكيف ذلك؟
انشر على الشّبكات الاجتماعية
رابط هذه المساهمة