2013-04-09 57 views
0

从加速度计值和设备平坦时,我有以下“条件”,连续播放嘟嘟声。我无法弄清楚如何在指定的时间段内(例如:5秒)将此声音设置为重复。我尝试了很多方法,并始终保持声音始终播放或不遵循if条件。如果有人可以帮助我..提前感谢您..Android,在指定的时间段内重复动作

if (x > -0.1 && x < 0.1 && y > -0.1 && y < 0.1) { 
    try { 
    AssetFileDescriptor afd = getAssets().openFd("beep.wav"); 
    mMediaplayer = new MediaPlayer(); 
    mMediaplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
    afd.close(); 
    mMediaplayer.prepare(); 
    mMediaplayer.start(); 
    mMediaplayer.setOnCompletionListener(new OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
     //mp.setLooping(false); 
     mp.stop(); 
     mp.release(); 
     } 
    }); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 

回答

0

为什么不在媒体播放器中播放新的异步任务在后台?创建您自己的异步任务实现,然后在其构造函数中传递一个时间值,然后在那里启动mediaplayer并继续检查它,以查看流逝的持续时间是否等于传递给它的值。我想,这可能帮助 - >

http://developer.android.com/reference/android/os/AsyncTask.html

0

您可以使用重复报警。

int secondsInterval = 5; // 5 seconds for example 
long interval = secondsInterval * 1000; 
long firstTime = Calendar.getInstance().getTimeInMillis(); 

Intent i = new Intent(ctx, AlarmHandler.class); 
PendingIntent mAlarmSender = PendingIntent.getService(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 

AlarmManager am = (AlarmManager) ctx.getSystemService(ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, interval, mAlarmSender); 

那么你应该包括意图处理类(AlarmHandler.class在上面的代码)这样​​的方法中代码:

@Override 
protected void onHandleIntent(Intent arg0) { 
    // your code here 
} 
相关问题