小编Air*_*ark的帖子

AudioTrack lag:obtainBuffer超时

我通过加载文件并通过FileInputStream> BufferedInputStream> DataInputStream方法将字节输入AudioTrack.write()来在我的Android手机上播放WAV.音频播放效果很好,如果是,我可以轻松调整采样率,音量等,性能良好.然而,一首曲目开始播放大约需要两秒钟.我知道AudioTrack有一个不可避免的延迟,但这太荒谬了.我每次播放曲目都会得到:

03-13 14:55:57.100: WARN/AudioTrack(3454): obtainBuffer timed out (is the CPU pegged?) 0x2e9348 user=00000960,     server=00000000
03-13 14:55:57.340: WARN/AudioFlinger(72): write blocked for 233 msecs, 9 delayed writes, thread 0xba28
Run Code Online (Sandbox Code Playgroud)

我注意到,每次播放曲目时,延迟的写入次数会增加一次 - 即使是在多个会话中 - 从手机开机之时起.块时间始终为230 - 240ms,考虑到此设备上的最小缓冲区大小为9600(9600/44100),这是有意义的.我在互联网上的无数次搜索中看到了这个消息,但它通常似乎与不播放音频或跳过音频有关.就我而言,这只是一个延迟的开始.

我正在高优先级的线程中运行我的所有代码.这是我正在做的截断但功能正常的版本.这是我的播放类中的线程回调.再次,这是有效的(现在只播放16位,44.1kHz,立体声文件),它只需要永远启动并且每次都有获取缓冲/延迟写入消息.

public void run() {

    // Load file
    FileInputStream mFileInputStream;
    try {
        // mFile is instance of custom file class -- this is correct, 
        // so don't sweat this line
        mFileInputStream = new FileInputStream(mFile.path());
    } catch (FileNotFoundException e) {
        // log
    }

    BufferedInputStream mBufferedInputStream …
Run Code Online (Sandbox Code Playgroud)

audio android buffer delay lag

10
推荐指数
1
解决办法
8374
查看次数

将Google跟踪代码管理器实施到Android中

我正在尝试按照本教程实施Google跟踪代码管理器:https: //developers.google.com/tag-manager/android/v4/

当我运行应用程序时,我在控制台中遇到这些错误:

    05-22 12:27:44.490    V/GoogleTagManager? Attempting to load a container from the resource ID 2131099650 (testconverteo.ismail.converteotag:raw/gtm_default_container)
    05-22 12:27:44.520    E/GoogleTagManager? Invalid macro: _gtm.loadEventEnabled
    05-22 12:27:44.520    V/GoogleTagManager? loadAfterDelay: containerId=GTM-XXXXX delay=29397190
    05-22 12:27:44.530    E/GoogleTagManager? Invalid macro: _gtm.loadEventEnabled
    05-22 12:27:44.490    W/GoogleTagManager? Failed to extract the container from the resource file. Resource is a UTF-8 encoded string but doesn't contain a JSON container
Run Code Online (Sandbox Code Playgroud)

我在Google Analytics中没有实时数据,甚至没有任何数据证明我的应用程序已被跟踪.

如果有人遇到同样的问题,或者他已经按照相同的步骤知道如何解决这个问题,请在评论中留下解释.

我做的步骤:

  • 我通过在builde.gradle(module:app)中添加这部分代码来设置Google Play Services SDK: compile 'com.google.android.gms:play-services:7.3.0'
  • 我将权限添加到AndroidManifest.xml文件中
  • 我下载并向应用程序添加默认容器二进制文件
  • 我创建了一个启动画面活动,我按照教程的模式初始化GTM
  • 我已将事件推送到dataLayer

我目前在启动画面活动中拥有的内容如下:

public class SplashScreenActivity extends …
Run Code Online (Sandbox Code Playgroud)

android google-tag-manager android-studio

10
推荐指数
1
解决办法
5804
查看次数

Flutter插件:“标有@UiThread的方法必须在主线程上执行。”

我正在创建 Flutter 插件。我将回调从 Android 发送到 Flutter 的渠道很少。情况是我正在侦听一些在主 UI 线程之外的其他线程中触发的事件。

最近 Flutter 更新后我开始收到这样的错误

E/AndroidRuntime( 9400): FATAL EXCEPTION:  STARTING
E/AndroidRuntime( 9400): Process: com.northernbitcoin.coinyacapp, PID: 9400
E/AndroidRuntime( 9400): java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread:  STARTING
E/AndroidRuntime( 9400):    at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:794)
E/AndroidRuntime( 9400):    at io.flutter.embedding.engine.FlutterJNI.dispatchPlatformMessage(FlutterJNI.java:684)
E/AndroidRuntime( 9400):    at io.flutter.embedding.engine.dart.DartMessenger.send(DartMessenger.java:80)
E/AndroidRuntime( 9400):    at io.flutter.embedding.engine.dart.DartExecutor.send(DartExecutor.java:174)
E/AndroidRuntime( 9400):    at io.flutter.view.FlutterNativeView.send(FlutterNativeView.java:144)
E/AndroidRuntime( 9400):    at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler$EventSinkImplementation.success(EventChannel.java:226)
...
Run Code Online (Sandbox Code Playgroud)

我找到的唯一信息在这里 https://github.com/flutter/flutter/issues/34993

是的,这里有一个解决方案 https://github.com/flutter/flutter/issues/34993#issue-459900986

但这对我来说似乎太开销了,因为我不想handler为每个事件创建新的

还有其他解决方案吗?

android dart flutter

9
推荐指数
1
解决办法
8687
查看次数

ListFragment add headerView给出了java.lang.IllegalStateException:alled

我有两个由tabhost管理的ListFragments.我在标签之间切换的时间都很好.headerView已正确添加.我第二次在片段之间切换我得到这个execption:

10-05 15:15:01.585: ERROR/AndroidRuntime(23263): java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called. 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.widget.ListView.addHeaderView(ListView.java:261) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.widget.ListView.addHeaderView(ListView.java:284) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at it.chiesacattolica.archive.ArchiveFragment.onActivityCreated(ArchiveFragment.java:199) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:858) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1183)
Run Code Online (Sandbox Code Playgroud)

和应用程序崩溃.我用来添加标题视图的代码如下:

@Override
public void onActivityCreated(Bundle arg0) {
    super.onActivityCreated(arg0);      
    getListView().setOnScrollListener(this);
    getListView().addHeaderView(searchBox);
    setListAdapter(mAdapter);
}
Run Code Online (Sandbox Code Playgroud)

怎么了 ?提前致谢

android android-fragments

2
推荐指数
1
解决办法
8018
查看次数