我正在使用jLayer解码MP3数据,通过以下调用:
SampleBuffer output = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream);
Run Code Online (Sandbox Code Playgroud)
这个返回解码数据的调用返回一个short []数组.
output.getBuffer();
当我使用该方法调用AudioTrack write()时,它在我循环文件时播放正常:
at.write(output.getBuffer(), 0, output.getBuffer().length);
Run Code Online (Sandbox Code Playgroud)
但是,当我使用本答案中的任何方法将short []数组转换为byte []数组时:https://stackoverflow.com/a/12347176/1176436声音变得扭曲和抖动:
at.write(output.getBuffer(), 0, output.getBuffer().length);
Run Code Online (Sandbox Code Playgroud)
变为:
byte[] array = ShortToByte_Twiddle_Method(output.getBuffer());
at.write(array, 0, array.length);
Run Code Online (Sandbox Code Playgroud)
我做错了什么,我该怎么做才能解决它?不幸的是,我需要将pcm数据放在我正在使用的另一个第三方库的字节数组中.如果重要,该文件为22kHz,这就是实例化的方式:
at = new AudioTrack(AudioManager.STREAM_MUSIC, 22050, AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT, 10000 /* 10 second buffer */,
AudioTrack.MODE_STREAM);
Run Code Online (Sandbox Code Playgroud)
非常感谢你提前.
编辑:这就是我现在实例化AudioTrack变量的方式.因此对于44kHz文件,发送的值是44100,而对于22kHz文件,值是22050.
at = new AudioTrack(AudioManager.STREAM_MUSIC, decoder.getOutputFrequency(),
decoder.getOutputChannels() > 1 ? AudioFormat.CHANNEL_OUT_STEREO : AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, 10000 /* 10 second buffer */,
AudioTrack.MODE_STREAM);
Run Code Online (Sandbox Code Playgroud)
这是解码方法:
public byte[] decode(InputStream inputStream, int startMs, int maxMs) throws …Run Code Online (Sandbox Code Playgroud) 我想从服务器中检索数据之后从jQuery成功函数中获取url.不幸的是,success函数采用的三个参数不会暴露原始url:
success: function(data, statusText, jqhxr)
我转储了jqhxr变量,但在那里找不到url.我需要url的原因是因为我通过循环一次调用几次,因此我不知道哪个Ajax调用会回来.使它成为异步调用也没有帮助.
先感谢您!
此调用发生在片段中,偶尔会因NullPointerException而崩溃,尤其是当应用程序未在前台运行时:
.getActivity()getApplication());
当从服务器返回反馈或需要重新绘制片段时,会发生此调用.我不确定为什么这个调用会抛出一个NPE,当Activity被GCed时,片段是否可以保留在内存中?
如果它有所不同,我使用SwipeyTab ViewPager来显示不同的片段.
java android garbage-collection android-ui android-fragments
目前我有一个活动,并且正在添加片段(搜索,歌曲详细信息,设置等).我实现了基于侧面的菜单导航,所以现在,作为副作用,tehre对于将多少碎片添加到Backstack没有限制.有什么方法可以限制片段数量,或删除旧条目? 例如,每首歌曲细节片段,有一个推荐的歌曲列表,并通过你可以去另一个歌曲细节片段.在Backstack中很容易有30个片段,如果你打开DDMS,你可以看到堆大小缓慢(但肯定)增加.
编辑:我尝试做的一件事是,如果用户点击其中一个侧边菜单选项,如果该片段已经在后台堆栈中尝试返回到该片段而不是实例化新片段,但当然,如果用户在歌曲详细信息页面上,然后他会期望按下它会将他带到那个片段,这样就行不通了.
编辑2:这是我的addFragment方法(以及Phil的建议):
public void addFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount() > 2) {
fm.popBackStack();
}
fm.beginTransaction()
.replace(R.id.fragment_container, fragment).addToBackStack("")
.commit();
}
Run Code Online (Sandbox Code Playgroud)
我只是试了一下,假设我的片段历史是:A-> B-> C-> D,从D回来,去B-> A->退出.
我只是进了8级测试:A-> B-> C-> D-> E-> F-> G-> H,从H回来,同样的事情发生了:H-> B-> A- >退出.
所有碎片都是通过上面的方法添加的.我想看到的是:H-> G-> F->退出.
请看下面:

我尝试使用绝对布局,但不推荐使用.感谢您的帮助,谢谢.
我们有一个庞大的(有点笨拙的)项目,它肯定有文件,包括不再使用的Java类和XML文件(也可能是图像).是否有工具或方法来找出项目中没有引用哪些文件?
我看到了这个问题,但它不是特定于 Android的:在Java Eclipse项目中查找未使用的类
我知道这听起来很不错,但感觉就像Android的UI组件和行为有时会不合时宜.
考虑以下XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RatingBar
android:id="@+id/ratingBar1"
android:style="@android:style/Widget.Holo.Light.RatingBar.Small"
android:progress="3"
android:max="5"
android:numStars = "5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
屏幕截图显示了不同设备尺寸的外观:
Nexus S评级栏
平板电脑评级栏
小型设备评级栏
虽然它只在预览工具中,但我可以确认它实际上是在设备上看起来的样子.
小型设备的行为令人抓狂.指定5颗星的RatingBar如何才能显示3,为什么不缩小星星以适应窗口?
认为wrap_content宽度是问题,我切换到layout_width ="fill_parent"并且没有改变小设备上的外观,但它完全搞砸了Tablets(对于"numStars"为5)这么多:

我的问题是,有没有办法在尺寸方面为RatingBar获得正确的行为?您会认为numStars或max足够,但它完全是任意的.当RatingBar被拉伸以便它绘制更多的星星时,它会添加星星并看到如何以3的进度,它根据显示的星数绘制它?坚持使用numStars是没有意义的!
如果没有办法从RatingBar获得逻辑性能,是否有任何替代方案,包括第三方小部件?如果没有,我想我总是可以绘制5个ImageViews并且只是对它进行相应的操作.
(请记住,布局中只有一个RatingBar会显示所有这些行为 - 忘记尝试使用其他小部件/组件调整大小,或者使用自己的样式.我知道它已经完成,但为什么这是默认行为?)
我的手机上有一个应用程序,即使没有声音播放,它也能持续关注音频。作为应用程序开发人员,我想知道我是否能够通知用户它是哪个应用程序,或者我是否可以判断我的应用程序是否具有音频焦点?
如果您经常(每秒或每半秒)发送一次更新服务,那么使用广播与注册监听器(您创建的接口)的优缺点是否存储在服务中的某种列表中并发送更新那样?
我在考虑内存使用,电池消耗等方面的问题.我知道它有点开放,但是,文档方面并不多,所以它们可以是平等的,但如果有人知道一个明确的答案或有一些输入,将不胜感激.
我的 html 布局如下:
<button>Hide first column</button>
<div class="row">
<div class="col-lg-1" id="left">Stuff</div>
<div class="col-lg-8" id="middle">Main Middle</div>
<div class="col-lg-3">1 + 8 + 3 is 12 right?</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用以下 JS/jQuery:
$(document).ready(function() {
$('button').click(function() {
$('#left').toggleClass('hidden');
if ($("#left").hasClass('hidden')) {
$("#middle").removeClass('col-lg-8');
$("#middle").addClass('col-lg-9');
}
else {
$("#middle").removeClass('col-lg-9');
$("#middle").addClass('col-lg-8');
}
});
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我基本上删除了左列并加宽了中间(我最终也可能加宽了右列)。
有没有办法让这些变化变得生动起来,而不是让它们突然发生?我正在考虑沿着柱子滑动一些东西来填充空间。
这是引导程序:http://www.bootply.com/MWz4O7khWq
谢谢
android ×8
android-ui ×3
java ×2
jquery ×2
ajax ×1
back-button ×1
css ×1
eclipse ×1
javascript ×1
jlayer ×1
mp3 ×1
pcm ×1