小编Dmi*_*try的帖子

SearchView就像Google Play视频应用

我正在尝试在Google Play视频应用中的操作栏中实现搜索界面(https://play.google.com/store/apps/details?id=com.google.android.videos).我认为它是SearchView小部件,但不明白如何进行相同的自定义:在其中添加按钮,设置背景,并扩展操作栏的整个宽度

播放视频截图

android toolbar android-actionbar searchview

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

Android响应汽车中的蓝牙音频按钮 - ExoPlayer

我已经制作了android音频应用程序.现在有些用户报告说,当他们通过汽车蓝牙连接设备时,应用程序没有响应媒体按钮(播放,暂停,下一个).

与此同时,我用蓝牙扬声器测试了应用程序 - 播放/暂停按钮可以根据需要工作.

车内蓝牙音箱和蓝牙收音机有什么区别吗??? 这很奇怪

我正在使用ExoPlayer并使用此代码处理媒体按钮:

    Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null, getApplicationContext(), MediaButtonReceiver.class);
    mSession.setMediaButtonReceiver(PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0));
    MediaSessionConnector mediaSessionConnector = new MediaSessionConnector(mSession, new DefaultPlaybackController(), false, null);
    mediaSessionConnector.setQueueNavigator(new QueueNavigatorAdapter() {
        @Override
        public void onSkipToPrevious(Player player) {
            playPrevious();
        }

        @Override
        public void onSkipToNext(Player player) {
            playNext();
        }
    });
    mediaSessionConnector.setPlayer(mPlayer, null);
Run Code Online (Sandbox Code Playgroud)

    mPlayer.prepare(source);
    mSession.setActive(true);
    mPlayer.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)

我知道AudioManager.registerMediaButtonEventReceiver()和处理KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE等但我确信mSession.setMediaButtonReceiver && MediaSessionConnector为我做了.

也许我错了,这还不够?

minSdkVersion 21

media android bluetooth exoplayer

6
推荐指数
1
解决办法
377
查看次数

android项目中的不同kotlin版本

如果我在项目和该项目的依赖项中有不同的 Kotlin 版本,我不知道会遇到什么问题。

选项1:

  • 该项目包括 Kotlin 1.3.72
  • 一些库(okhttp例如)包括 Kotlin 1.4.10。(我们现在为 Authenticator、Interceptor 等使用 Kotlin 1.4.x 功能接口。

选项 2:

  • 该项目包括 Kotlin 1.4.0
  • 一些库包括 Kotlin 1.3.71

在选项 2 中,我收到下一个警告:
w: 类路径中的运行时 JAR 文件应该具有相同的版本。这些文件位于类路径中: /.gradle/caches/transforms-2/files-2.1/ab41544fa06f7b55dec847efe3b9899c/jetified-kotlin-stdlib-jdk7-1.3.71.jar (version 1.3) .transforms-cache/s/文件-2.1 / a4c6c3b949eb40b555dea1468ae75f87 / jetified-科特林-STDLIB-1.4.10.jar(1.4版本).gradle /高速缓存/变换-2 /文件-2.1 / f98f62bf33e752598311020043618780 / jetified-科特林-STDLIB-共1.4.10.jar(版本 1.4)
w:类路径中的某些运行时 JAR 文件的版本不兼容。考虑从类路径中删除它们

java android gradle kotlin

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

android电源管理,睡眠模式等

我很难理解Android设备的电源管理最佳实践和睡眠模式状态.

  1. 睡眠模式.

    1.1)什么时候会发生?

    1.2)CPU将进入睡眠状态并且我的线程暂停?这会发生什么时候?

    1.3)为防止​​CPU休眠,我可以使用PARTIAL_WAKE唤醒锁定或报警管理器吗?什么是最好的电池?

    1.4)如何通过我的应用程序以编程方式阻止在睡眠模式下关闭WiFi和3G连接?

PS是的,我明白它对电池寿命有害!我试图找到最好的妥协......

  1. 我写了我的即时通讯应用程序.我需要持久连接到服务器.如何实现这一目标的最佳方式?在关闭屏幕约20-30分钟后,我失去了互联网连接,但Skype保持在线状态.他们是怎么做到的?

  2. 我知道C2DM框架.但它从服务器到应用程序是单向的.如何最好的方式来使用它?服务器必须知道客户端真正连接!

android sleep power-management

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

长链中的rxjava StackOverflowError异常

我使用许多运算符构建了很长的rxjava链(带有改装请求):doOnNext,doOnError,switchIfEmpty,onErrorResumeNext,flatMap在某些设备(例如Android 4.1)上,当链沿最长路线走时,它会引发StackOverflowError异常。

是否有一些方法或最佳实践来优化链或防止StackOverflowError?

现在,我只看到一种方法-断开链,并从第一个onComplete(OnNext)调用第二部分,但我认为这不是被动方式。

另一种方法-使用.subscribeOn(Schedulers.newThread());更改线程 操作员。似乎也不是最好的解决方案。

我的代码:1)订阅代码

fastSearch(keyphrase)
    .onErrorResumeNext(throwable -> {
        return correctKeyphraseAndSearch(keyphrase);
    })
    .doOnNext(resultsDao -> {...})
    .subscribe(...)
Run Code Online (Sandbox Code Playgroud)

2)辅助方法

public static Observable<SearchResultsDao> fastSearch(final String keyphrase) {
    String SRD = "true";
    final HttpQueryParams params = new HttpQueryParams();
    //read from cache chain
    Observable<SearchResultsDao> cacheChain = getCache().fastSearch(keyphrase, SRD)
            .doOnNext(...)
            .doOnError(...)
            .onErrorResumeNext(new HandleNoCacheEntry<SearchResultsDao>(params)); //save some data to "params", and return Observable.empty
    //network request chain
    Observable<SearchResultsDao> networkChain = getApi().fastSearch(keyphrase, SRD)
            .retryWhen(new OnNewSessionRequired())
            .doOnNext(new WriteToCacheAction<SearchResultsDao>(params)); //save to cache
    //combine cache+network chains
    return cacheChain
            .switchIfEmpty(networkChain)
            .doOnNext(resultsDao -> …
Run Code Online (Sandbox Code Playgroud)

stack-overflow android rx-java retrofit jack-compiler

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

Android简单布局2个视图

无法理解如何实现简单的事情.我需要使用下一个行为布局2个视图:

文本短时,按钮应位于文本右侧

当文本很长时,它会椭圆化,按钮始终可见并且全宽

现在我得到那个按钮就会离开屏幕

android android-layout

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