mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Ensure beep MediaPlayer is released
This commit is contained in:
parent
4050f5c2f3
commit
e130eac0ea
|
@ -26,12 +26,14 @@ import android.os.Vibrator;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages beeps and vibrations for {@link CaptureActivity}.
|
* Manages beeps and vibrations for {@link CaptureActivity}.
|
||||||
*/
|
*/
|
||||||
final class BeepManager implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {
|
final class BeepManager implements
|
||||||
|
MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, Closeable {
|
||||||
|
|
||||||
private static final String TAG = BeepManager.class.getSimpleName();
|
private static final String TAG = BeepManager.class.getSimpleName();
|
||||||
|
|
||||||
|
@ -88,18 +90,21 @@ final class BeepManager implements MediaPlayer.OnCompletionListener, MediaPlayer
|
||||||
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
||||||
mediaPlayer.setOnCompletionListener(this);
|
mediaPlayer.setOnCompletionListener(this);
|
||||||
mediaPlayer.setOnErrorListener(this);
|
mediaPlayer.setOnErrorListener(this);
|
||||||
|
try {
|
||||||
AssetFileDescriptor file = activity.getResources().openRawResourceFd(R.raw.beep);
|
AssetFileDescriptor file = activity.getResources().openRawResourceFd(R.raw.beep);
|
||||||
try {
|
try {
|
||||||
mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
|
mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
|
||||||
|
} finally {
|
||||||
file.close();
|
file.close();
|
||||||
|
}
|
||||||
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
|
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
|
||||||
mediaPlayer.prepare();
|
mediaPlayer.prepare();
|
||||||
|
return mediaPlayer;
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
Log.w(TAG, ioe);
|
Log.w(TAG, ioe);
|
||||||
mediaPlayer = null;
|
mediaPlayer.release();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return mediaPlayer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -122,4 +127,12 @@ final class BeepManager implements MediaPlayer.OnCompletionListener, MediaPlayer
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void close() {
|
||||||
|
if (mediaPlayer != null) {
|
||||||
|
mediaPlayer.release();
|
||||||
|
mediaPlayer = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,6 +283,7 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
|
||||||
}
|
}
|
||||||
inactivityTimer.onPause();
|
inactivityTimer.onPause();
|
||||||
ambientLightManager.stop();
|
ambientLightManager.stop();
|
||||||
|
beepManager.close();
|
||||||
cameraManager.closeDriver();
|
cameraManager.closeDriver();
|
||||||
if (!hasSurface) {
|
if (!hasSurface) {
|
||||||
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
|
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
|
||||||
|
|
Loading…
Reference in a new issue