V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
koche
V2EX  ›  分享创造

用 Kotlin 写了一个简单的音乐播放器

  •  
  •   koche ·
    kocheHao · 2017-05-31 17:30:34 +08:00 · 4171 次点击
    这是一个创建于 2758 天前的主题,其中的信息可能已经有所发展或是发生改变。

    next-kotlin

    下载试用

    极简的音乐播放器,用户不需要看屏幕就可以轻松切歌,

    我的目标是,减少用户的切歌次数,推荐用户想听歌曲。

    项目用了经典的:MVP 框架 + Dagger + RxJava + Realm 欢迎大家试用以及提出建议!

    7 条回复    2017-06-04 18:59:03 +08:00
    xiaket
        1
    xiaket  
       2017-06-01 08:02:22 +08:00
    赞 Ludovico Einaudi.
    imxieke
        2
    imxieke  
       2017-06-01 09:12:05 +08:00 via Android   ❤️ 1
    小米 5 安卓 7.1 无法安装 报错原因:other
    koche
        3
    koche  
    OP
       2017-06-02 10:53:16 +08:00
    @imxieke 谢谢反馈!的确安装包有问题,现在已经修复了。
    moxiaonai
        4
    moxiaonai  
       2017-06-02 11:01:38 +08:00 via Android
    华为 mates 安卓 6.0 应用未安装
    cloverii
        5
    cloverii  
       2017-06-02 12:14:45 +08:00 via Android
    红米 4 国际版 Android 6.0 App not installed
    imxieke
        6
    imxieke  
       2017-06-02 12:16:40 +08:00
    @koche #3 可以安装 但是报错了 打开界面 一直 loading,,

    ```
    io.reactivex.exceptions.OnErrorNotImplementedException: setDataSource failed: status = 0x80000000
    at io.reactivex.internal.functions.Functions$14.accept(Functions.java:229)
    at io.reactivex.internal.functions.Functions$14.accept(Functions.java:226)
    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:72)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252)
    at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
    at android.os.Handler.handleCallback(Handler.java:754)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:160)
    at android.app.ActivityThread.main(ActivityThread.java:6197)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
    Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
    at android.media.MediaMetadataRetriever.setDataSource(Native Method)
    at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:69)
    at com.junnanhao.next.data.model.Song$Companion.fromFile(Song.kt:114)
    at com.junnanhao.next.data.model.Song$Companion.fromCursor(Song.kt:85)
    at com.junnanhao.next.data.SongsRepository$scanMusic$1.apply(SongsRepository.kt:58)
    at com.junnanhao.next.data.SongsRepository$scanMusic$1.apply(SongsRepository.kt:21)
    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:63)
    at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248)
    at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35)
    at io.reactivex.Observable.subscribe(Observable.java:10700)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$1.run(ObservableSubscribeOn.java:39)
    at io.reactivex.Scheduler$1.run(Scheduler.java:138)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)

    ```
    timothyye
        7
    timothyye  
       2017-06-04 18:59:03 +08:00 via Android
    哈哈,这个老头的钢琴曲我也喜欢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1152 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:17 · PVG 02:17 · LAX 10:17 · JFK 13:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.