我正在使用ExoPlayer 2.x的新功能来播放这样的音频文件列表:
List<MediaSource> playlist = new ArrayList<>();
...
ConcatenatingMediaSource concatenatedSource = new ConcatenatingMediaSource(
playlist.toArray(new MediaSource[playlist.size()]));
mExoPlayer.prepare(concatenatedSource);
mExoPlayer.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但为了相应地更新我的UI,我需要知道当前正在播放哪首曲目以及该曲目的进度.ExoPlayer有没有听众?
谢谢!
我有一个活动,显示在对话框中:

为了删除边框和圆角,我试过这个:
<resources>
<style name="ActivityDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowFrame">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)
边界消失了,但遗憾的是对话框周围的边缘.
我正在使用以下代码在设备接近任何对象时将音频流切换到耳机:
@Override
public void onSensorChanged(SensorEvent event) {
if (mAudioManager.isWiredHeadsetOn() || !(mCurrentPlaybackStatus == STATUS_PLAYING
|| mCurrentPlaybackStatus == STATUS_PREPARING)) {
return;
}
boolean isClose = event.values[0] < mSensor.getMaximumRange();
if (!mScreenDisabled && isClose) {
mAudioManager.setMode(AudioManager.STREAM_MUSIC);
mAudioManager.setSpeakerphoneOn(false);
disableScreen();
mScreenDisabled = true;
} else if (mScreenDisabled && !isClose) {
mAudioManager.setSpeakerphoneOn(true);
mAudioManager.setMode(mAudioManagerMode);
enableScreen();
mScreenDisabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,呼叫时有一个很大的延迟.setMode(AudioManager.STREAM_MUSIC);(> 500ms)
使用Android的默认MediaPlayer,可以毫不延迟地更改输出流:
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); // ear piece
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); // speakerphone
Run Code Online (Sandbox Code Playgroud)
有没有办法改变ExoPlayer的输出流?
我试图将叠加层拖动到地图上,如果用户点击针脚,也会显示信息框.要做到这一点,我需要测量的时间MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP.为了让它感觉尽可能自然,我想知道Android用于Single-Tap(目前我使用的是180ms)以及Long-Tap的价值.
谢谢!
我正在尝试实现一个可拖动的可拖动按钮.
不幸的是,系统在拖动开始后停止发送MotionEvents.因此,永远不会调用GestureDetector.OnGestureListener.onFling()方法.
有没有办法在拖拽系统消耗之前拦截这些事件?
我也尝试创建自己的FlingDetector,但它在不同的设备和屏幕密度上不可靠:
public class FlingDetector {
private final int MIN_FLING_SPEED = 3;
private OnFlingListener mOnFlingListener;
private float mCurrentX = 0;
private float mCurrentY = 0;
private long mLastMovementTime = 0;
private double mCurrentVelocity = 0;
private final float mDensity;
public FlingDetector(OnFlingListener onFlingListener, Context context) {
mOnFlingListener = onFlingListener;
mDensity = context.getResources().getDisplayMetrics().density;
}
public void onMovementStart(float x, float y) {
mCurrentX = x;
mCurrentY = y;
mLastMovementTime = System.currentTimeMillis();
mCurrentVelocity = 0;
}
public void onMovementEnd(float x, float y) …Run Code Online (Sandbox Code Playgroud) http://img683.imageshack.us/img683/645/weatherscreenmockupoutl.png
我问自己什么是编码这种布局的最佳方法.基本上我只需要知道如何获得具有相等宽度的七列.
提前致谢!
我正在发起媒体意图拍照.在用户拍照并返回上一个活动后,整个应用程序已重新启动.
由于这不会一直发生,我认为我的应用程序进入后台,当设备内存不足时,android会将其杀死.
有什么方法可以让我的应用程序无法进入后台吗?
谢谢!