Simoh نشر 10 مايو 2016 أرسل تقرير نشر 10 مايو 2016 أود إدراج خاصية التنبيه مثل تلك الموجود على المنبهات Alarm داخل تطبيق، شريطة أن يقوم التطبيق بهذه العملية كل مدة زمنية احددها أنا، مثلا كل 6 ساعات، فكيف ذلك؟ اقتباس
0 E.Nourddine نشر 10 مايو 2016 أرسل تقرير نشر 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 أرسل تقرير نشر 11 مايو 2016 عندي سؤال بعيدآ عن الموضوع هل برمجة تطبيقات الاندرويد تحتاج الى شخص ذكي في الرياضيات اقتباس
السؤال
Simoh
أود إدراج خاصية التنبيه مثل تلك الموجود على المنبهات Alarm داخل تطبيق، شريطة أن يقوم التطبيق بهذه العملية كل مدة زمنية احددها أنا، مثلا كل 6 ساعات، فكيف ذلك؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.