2015-04-20 3 views
-1

Как я могу установить приложение для Android, которое воспроизводит определенный шум или звук в определенное время каждый день?
Пока мой код состоит из кнопки, которая будет воспроизводить шум при нажатии.Android-приложение, которое воспроизводит звук ежедневно

ответ

1

вы должны создать службу и на службе вы играете ю песню из папки активов каждые 10:00 AM, например .. услуга будет выглядеть следующим образом: MyService.java

import android.app.Service; 
import android.content.Intent; 
import android.content.res.AssetFileDescriptor; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.media.MediaPlayer; 
import android.os.Handler; 
import android.os.IBinder; 
import android.os.Message; 
import android.text.format.Time; 
import android.widget.Switch; 
import android.widget.Toast; 

import java.io.IOException; 
import java.text.ParseException; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Timer; 
import java.util.TimerTask; 

public class MyService extends Service { 

    private int Annee; 
    private int Mois; 
    private int Jour; 
    private int Heure; 
    private int Minute; 
    boolean afficher=true; 
    private Handler customHandler = new Handler(); 

    public MyService() { 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     throw new UnsupportedOperationException("Non implementé"); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     Toast.makeText(this,"Service demarré",Toast.LENGTH_LONG).show(); 
     customHandler.postDelayed(updateTimerThread, 3000); 
     super.onStart(intent, startId); 
    } 


    @Override 
    public void onDestroy() { 
     onStop(); 
     Toast.makeText(this,"Service arrété",Toast.LENGTH_LONG).show(); 
     customHandler.removeCallbacks(updateTimerThread); 
     super.onDestroy(); 
    } 

    public void onStop(){ 
    } 
    private Runnable updateTimerThread = new Runnable() { 
     public void run() { 


      final Calendar cal = Calendar.getInstance(); 
       Annee = cal.get(Calendar.YEAR); 
       Mois = cal.get(Calendar.MONTH)%12+1; 
       Jour = cal.get(Calendar.DAY_OF_MONTH); 
       Heure=cal.get(Calendar.HOUR_OF_DAY)%24+1; 
       if(Heure==24)Heure=0; 
       Minute=cal.get(Calendar.MINUTE); 
       String min=Integer.toString(Minute); 
       String heure=Integer.toString(Heure); 
       String h=heure+":"+min; 
       java.text.SimpleDateFormat simpleTimeFormat = new java.text.SimpleDateFormat("HH:mm"); 
       String h2 = null; 
       try { 
        h2 = simpleTimeFormat.format(simpleTimeFormat.parse(h)); 
       } catch (ParseException e) { 
        e.printStackTrace(); 
       } 

      String a, m, j; 
      j = Integer.toString(Jour); 
      m = Integer.toString(Mois); 
      a = Integer.toString(Annee); 
      String d = j + "/" + m + "/" + a; 
      java.text.SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat("dd/MM/yyyy"); 
      String d2 = null; 
      try { 
       d2 = simpleDateFormat.format(simpleDateFormat.parse(d)); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

      if (h2.equals("10:00")) { 
       if (afficher){ 
        Intent intent =new Intent(getBaseContext(),AlertD.class); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        intent.putExtra("Cle",cur.getString(0)); 
        getApplication().startActivity(intent); 
       afficher=false;} 

      }} 

      customHandler.postDelayed(this , 3000); 
     }; 

} 

bootCompleted.java

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

/** 
* Created by Mechalikh on 21/12/2014. 
*/ 
public class BootCompleted extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)){ 
    Intent serviceIntent= new Intent(context,MyService.class); 
    context.startService(serviceIntent); 
} 
    } 

} 

alertD.java (диалог тревоги)

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.res.AssetFileDescriptor; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 


public class AlertD extends Activity { 
    MediaPlayer m; 
    public static String cle; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     m=new MediaPlayer(); 
     cle =getIntent().getStringExtra("Cle"); 
     final AlertDialog alertDialog =new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle("Votre rendez-vous"); 
     alertDialog.setMessage("Vous avez un rendez-vous dans UNE HEURE !"); 
     alertDialog.setButton("Arréter", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       m.stop(); 
       AlertD.super.onBackPressed(); 
      } 
     }); 


     alertDialog.show(); 
     Alarme(); 
    } 

    private void Alarme() { 

     try { 
      if (m.isPlaying()) { 
       m.stop(); 
       m.release(); 
       m = new MediaPlayer(); 
      } 
      AssetFileDescriptor descriptor = getAssets().openFd("Alarm.mp3"); 
      m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); 
      descriptor.close(); 
      m.prepare(); 
      m.setVolume(1f, 1f); 
      m.setLooping(true); 
      m.start(); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 

    } 

} 

подробнех см этого учебного пособия http://blog.vogella.com/2011/12/11/automatically-starting-services-in-android-after-booting/

0

Используйте Alarm Manager и установите неточный повторяющийся сигнал тревоги в свое время выбора.

 Смежные вопросы

  • Нет связанных вопросов^_^