Note that there are some explanatory texts on larger screens.

plurals
  1. POLatency in playing a .wav/.mp3/.ogg audio file in Android App
    primarykey
    data
    text
    <p>I'd written an application for playing 20 millisecond audio clip(.wav format). It simply plays the sound clip repeatedly 1000 times.</p> <p>But due to Latency, number of times it plays lies between 978 and 984. I'd also tried other audio format(.ogg, .mp3, etc).</p> <p>I want reduce the latency and also to get reliable number.</p> <p>I'm sharing my code below:</p> <pre><code>package com.abhinav.soundlooper; import android.media.MediaPlayer; import android.os.Bundle; import android.os.CountDownTimer; import android.app.Activity; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { Button btnStart; TextView tvPause, tvLoop; EditText etPause, etLoop; long pause, loop; private CountDownTimer timer; MediaPlayer mp; public Thread t; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnStart = (Button) findViewById(R.id.btnStart); // tvLoop = (TextView) findViewById(R.id.etLoop) etPause = (EditText) findViewById(R.id.etPause); etLoop = (EditText) findViewById(R.id.etLoop); btnStart.setOnClickListener(this); mp = MediaPlayer.create(getApplicationContext(), R.raw.beepwav); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK &amp;&amp; event.getRepeatCount() == 0) { finish(); return true; } return super.onKeyDown(keyCode, event); } @Override public void onClick(final View v) { // TODO Auto-generated method stub // pause = Integer.valueOf(etPause.getText().toString()) + 1 ; // loop = 1 + Integer.valueOf(etLoop.getText().toString()); // long ti = (pause+30); // long tt = ti*loop; timer = new CountDownTimer(30000, 30) { int i =0; public void onTick(long millisUntilFinished) { // v.playSoundEffect(android.view.SoundEffectConstants.CLICK); mp.start(); // try { // timer.wait(10); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } i++; } public void onFinish() { // mTextField.setText("done!"); Log.i("loop", ""+i); stopAll(); // mp.stop(); // mp.release(); } }.start(); // } protected void stopAll() { // TODO Auto-generated method stub timer.cancel(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload