我正在尝试使用AudioTrack课程.基本上,我的应用程序必须在用户触摸屏幕上的特定对象时生成声音.我用这个例子作为指导.
我的应用程序似乎应该工作,但通常在触摸屏幕约一分钟后崩溃:
07-02 20:40:53.459: E/AndroidRuntime(11973): FATAL EXCEPTION: Thread-10
07-02 20:40:53.459: E/AndroidRuntime(11973): java.lang.IllegalStateException: play() called on uninitialized AudioTrack.
07-02 20:40:53.459: E/AndroidRuntime(11973): at android.media.AudioTrack.play(AudioTrack.java:824)
07-02 20:40:53.459: E/AndroidRuntime(11973): at com.mysounds_experimental.SoundThread.playSound(SoundThread.java:108)
07-02 20:40:53.459: E/AndroidRuntime(11973): at com.mysounds_experimental.SoundThread.run(SoundThread.java:69)
Run Code Online (Sandbox Code Playgroud)
来自生成声音的类的方法
public void initAudioTrack() {
int bufferSize = AudioTrack.getMinBufferSize(sampleRate
, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC
, sampleRate
, AudioFormat.CHANNEL_CONFIGURATION_MONO
, AudioFormat.ENCODING_PCM_16BIT
, bufferSize
, AudioTrack.MODE_STREAM);
}
private void playSound(){
audioTrack.write(generatedSnd, 0, numSamples);
audioTrack.play();
}
public void stopPlaying() {
audioTrack.flush();
audioTrack.stop();
audioTrack.release();
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我正在使用带有PagerTabStrip的ViewPager,我需要将自定义字体设置为我的小部件.要为a Button或a 设置字体,TextView我只需扩展类并设置字体.
public class MyButton extends Button {
public MyButton(Context context) {
super(context);
initCustomFont();
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
initCustomFont();
}
public MyButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initCustomFont();
}
private void initCustomFont() {
if(!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/boton_regular.ttf");
setTypeface(tf);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能用这种方法PagerTabStrip.有没有其他方法来设置可以使用的字体PagerTabStrip?