Tôi đang theo dõi loạt bài giảng video về Lập trình Android được thiết kế trong API trước 21 lần. Do đó nó cho tôi biết để tạo ra một biến SoundPool theo cách sau.đặt Thuộc tính âm thanh trong SoundPool Lớp.Builder cho API 21
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
//SoundPool(int maxStreams, int streamType, int srcQuality)
Tuy nhiên, tôi cũng muốn sử dụng SoundPool này cho API 21. Vì vậy, tôi đang làm điều này:
if((android.os.Build.VERSION.SDK_INT) == 21){
sp21 = new SoundPool.Builder();
sp21.setMaxStreams(5);
sp = sp21.build();
}
else{
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
}
sp21 là một biến Builder
kiểu cho API 21 và sp là của SoundPool
loại.
Điều này hoạt động rất tốt với AVD của tôi có API 21 và thiết bị thực có API 19. (Chưa thử thiết bị thực với API 21 nhưng tôi nghĩ nó sẽ hoạt động tốt). Bây giờ, tôi muốn đặt streamType
thành USAGE_MEDIA
trong if-block trước sp = sp21.build();
. Vì vậy, tôi gõ:
sp21.setAudioAttributes(AudioAttributes.USAGE_MEDIA);
Nhưng Lint đánh dấu nó trong màu đỏ và nói:
Phương pháp setAudioAttributes (AudioAttributes) trong các loại SoundPool.Builder không áp dụng cho các đối số (int)
Tôi biết rằng ngay cả khi tôi không đặt nó thành USAGE_MEDIA, mặc định nó sẽ được đặt thành mặc định. Nhưng tôi yêu cầu tham khảo trong tương lai nếu tôi phải đặt nó vào một cái gì đó khác như: USAGE_ALARM.
Tôi nên tiếp tục như thế nào?
Vui lòng trợ giúp!
Tôi đã gọi đến Audio Attributes, SoundPool, SoundPool.builder và AudioManager.
quên include.setMaxStreams (5) phù hợp # 3 –