小编Jac*_*ień的帖子

在计时器中同时播放2个声音时滞后

我有一个小应用程序,基本上设置一个计时器,一个接一个地播放2个声音的集合.

我尝试了2个计时器,因为我希望每次都能在两个声音的同时开始.我给应用程序500ms用于在开始之前设置两个计时器

    Calendar cal = Calendar.getInstance();
    Date start = new Date(cal.getTime().getTime() + 500);

    timerTask1 = new TimerTask() { //1st timer
      @Override
      public void run() {
          soundManager.playSound(1);
      }
    };
    timer1 = new Timer();
    timer1.schedule(timerTask1, start, 550);


    timerTask2 = new TimerTask() { //2nd timer
      @Override
      public void run() {
          soundManager.playSound(2);
      }
    };
    timer2 = new Timer();
    timer2.schedule(timerTask2, start, 550);
}
Run Code Online (Sandbox Code Playgroud)

soundManager是一个基于本教程SoundManager对象.因为我同时只播放2个声音,所以我所做的唯一改变就是将可用流的数量从20减少到2.

现在问题.不是在我的Motorola RAZR或仿真器上以相同的速率播放.应用程序有时会减速,制动时间比预期长.我不能让这种情况发生.这可能有什么问题?

我在OGG格式中使用非常短的声音

编辑:我做了一些研究.使用了2个aproaches.我正在测量声音之间的毫秒距离.刷新率为500毫秒.

  • 第一个问题是TimerTask …

android soundmanager2

5
推荐指数
2
解决办法
1146
查看次数

片段与活动轮换重叠

我对此非常困惑.我有一个actionbar列表导航.我点击列表fragment一个接一个地打开2 并显示在同一个活动中.我基本上用这种方法替换它们:

public void openFragment(AprilAppsFragment createdFragment){        
    if (createdFragment.getClass().isInstance(getDisplayedFragment()))
        return;

    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

    transaction.replace( R.id.main_fragment, createdFragment, "displayed fragment"); 
    transaction.addToBackStack(null);
    transaction.commit();  
}
Run Code Online (Sandbox Code Playgroud)

我打开片段A,然后打开片段B,然后旋转屏幕.片段A正在重新创建崩溃我的应用程序

是的,因为我正在使用替换?如何避免重新创建不再显示的片段,而不会失去对其进行反压的可能性?

android android-fragments

4
推荐指数
1
解决办法
2726
查看次数

@Nullable @Named in GAE/Android Sample

我正在尝试使用示例GAE/Android应用程序.有实体.

在生成的PlaceEndpoint类中有一个方法:

@ApiMethod(name = "listGame")
    public CollectionResponse<Place> listPlace(
            @Nullable @Named("cursor") String cursorString,
            @Nullable @Named("limit") Integer limit) {

        EntityManager mgr = null;
        Cursor cursor = null;
        List<Game> execute = null;

        try {
            mgr = getEntityManager();
            Query query = mgr.createQuery("select from Place as Place");
            if (cursorString != null && cursorString != "") {
                cursor = Cursor.fromWebSafeString(cursorString);
                query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
            }

            if (limit != null) {
                query.setFirstResult(0);
                query.setMaxResults(limit);
            }

            execute = (List<Game>) query.getResultList();
            cursor = JPACursorHelper.getCursor(execute);
            if (cursor != null)
                cursorString = cursor.toWebSafeString();

            // …
Run Code Online (Sandbox Code Playgroud)

google-app-engine android google-cloud-endpoints

4
推荐指数
1
解决办法
1498
查看次数

AppEnginePlugin:不支持的major.minor版本51.0 - appengine 1.9.17

我更新到Android Studio 1.0 RC后,出现此错误:

AppEnginePlugin : Unsupported major.minor version 51.0
Run Code Online (Sandbox Code Playgroud)

由于appengine是用java 1.7编译的,为什么它说它不受支持?

这是我的java版本:

java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java google-app-engine gradle android-studio

4
推荐指数
2
解决办法
3709
查看次数

而JAVA中的EOF?

在一些论坛的答案后,我正在使用这个:

    while (fileReader.nextLine() != null) {
        String line = fileReader.nextLine();
        System.out.println(line);
    }  
Run Code Online (Sandbox Code Playgroud)

...但它最后会抛出异常(线程中的异常"main"java.util.NoSuchElementException:找不到行)

java

3
推荐指数
2
解决办法
11万
查看次数

ProtocolException:无效的标头::在HTTPRequest上

这真的很奇怪.我有一个看起来几乎相同但不抛出异常的函数.这是有问题的代码:

public Header[] generateHeaders() {
    Header[] headers = new Header[2];
    headers[0] = new BasicHeader("Client", "android");
    headers[1] = new BasicHeader("Accept", "application/json; charset=UTF-8");
    return headers;
}

public HttpPost getHttpRequestPost() throws URISyntaxException {
    HttpPost request = new HttpPost(new URI(generateQueryUrl()));
    request.setHeaders(generateHeaders());
    setTimeout(request);

    return request;
}

protected Query buildQuery() {
    Query query = null;

    query = new Query(new Config(), getContext());
    query.addOrderedParam(FUNCTION_NAME);

    return query;
}
Run Code Online (Sandbox Code Playgroud)

下面的代码导致ClientProtocolException,正是这样:Caused by: org.apache.http.ProtocolException: Invalid header: :

public HttpResponse execute() throws URISyntaxException, ClientProtocolException,
        IOException {
    HttpClient client = new …
Run Code Online (Sandbox Code Playgroud)

android httprequest

3
推荐指数
1
解决办法
1873
查看次数

索引附近的Unicode属性不正确

我试图在Android应用程序中使用java后端的方法(问题可能是后端使用的是JAVA 1.7,以及Android应用程序JAVA 1.6).方法是:

public static boolean isAlphabetCharacter(String letter) {
    String pattern = "\\A\\pL+\\z";
    return letter.matches(pattern);
}
Run Code Online (Sandbox Code Playgroud)

它崩溃了: Incorrect Unicode property near index ...

regex android

3
推荐指数
1
解决办法
566
查看次数

必须在[proguard.optimize.peephole.ClassMerger]中覆盖方法,如果曾在Android Studio中调用过

至少看过2个类似的问题,但都考虑了eclipse非gradle构建.

我正在尝试使用gradle组装发布:

./gradlew myapp:assembleRelease --stacktrace
Run Code Online (Sandbox Code Playgroud)

除了最新的Google proguard示例,我的proguard.txt还包含:

# ButterKnife
-keep class *$$ViewInjector{}
-dontwarn butterknife.Views$InjectViewProcessor
-dontwarn butterknife.internal.**

#JodaTime
-dontwarn org.joda.time.**

#Apache
-dontnote org.apache.**
-dontwarn org.apache.**
Run Code Online (Sandbox Code Playgroud)

这似乎消除了所有的警告,但现在正在与神秘的挣扎

Caused by: java.lang.UnsupportedOperationException: Method must be overridden in [proguard.optimize.peephole.ClassMerger] if ever called
Run Code Online (Sandbox Code Playgroud)

......我不知道这意味着什么.

android proguard gradle android-studio

3
推荐指数
1
解决办法
1516
查看次数

IllegalArgumentException:replaceFirst 时非法组引用

我试图替换String匹配我的正则表达式的第一次出现,同时像这样迭代这些出现:

(这段代码非常简化,所以不要试图找到一些更大的意义)

Matcher tagsMatcher = Pattern.compile("\\{[sdf]\\}").matcher(value);

int i = 0;
while (tagsMatcher.find()) {
    value = value.replaceFirst("\\{[sdf]\\}", "%" + i + "$s");
    i++;
}
Run Code Online (Sandbox Code Playgroud)

我正在IllegalArgumentException: Illegal group reference执行replaceFirst. 为什么?

java regex

3
推荐指数
1
解决办法
6739
查看次数

使用带有问号 (?) 参数的 sqldb rawQuery

我正在尝试使用 ?s 作为参数来构建我的查询,但它显然有问题。希望文档至少提供一个示例...

SQLDb.rawQuery("SELECT C.?, B.?, B.?, B.? FROM ? C, ? B  WHERE C.? = B.?", new String[] 
               {Tables.CATEGORIES_NAME, Tables.BUDGET_DATE, Tables.BUDGET_VALUE, Tables.KIND, Tables.CATEGORIES, Tables.BUDGET, Tables.CATEGORIES, Tables.TABLE_ID, Tables.TABLE_ID});
Run Code Online (Sandbox Code Playgroud)

那些 const 都是字符串,只是列的名称。我究竟做错了什么?

sqlite android

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