cordova-music-controls-plugin icon indicating copy to clipboard operation
cordova-music-controls-plugin copied to clipboard

Connection over bluetooth

Open Dzivo opened this issue 8 years ago • 20 comments
trafficstars

Expected: I would expect that when i connect over bluetooth connection data is displayed on the device it is played on just.

Current behaviour: Music plays when connected over bluetooth but there is no data about song displayed.

Note: Data is correctly displayed in the notifications and can paly pause the radio.

Correct me if i am wrong and i need to look for another plugin to achive this.

Thank you

Dzivo avatar Oct 03 '17 06:10 Dzivo

Bluetooth works for me just fine. It makes no difference to this plugin where or how the media is played, this just controls the controller.

owen-m1 avatar Oct 05 '17 18:10 owen-m1

I think the issue is that bluetooth devices normally display some metadata about the currently playing item.

From what I have tests iOS takes care of sending the same info you set for this plugin through to the bluetooth display, Android does not though. So even though it plays fine, you get the audio, you can use headset controls for skip, pause etc over bluetooth you don't get nice metadata on remote displays.

I haven't been able to find an easy way around this, all solutions I have found invoice hacking onto google music app functionality which isn't really ideal as if that app isn't install that doesn't work.

@Dzivo are you testing on Android?

ghenry22 avatar Nov 09 '17 10:11 ghenry22

I'm having the same issue with my smartwatch. It correctly sends previous/play/next events but does not display any info. The current track info is not a big deal for me but another problem is that the watch seems to have no idea if the track is currently playing or not so the toggle button always sends a play event (instead of the pause event it should send if the track is playing).

Rudloff avatar Feb 26 '18 20:02 Rudloff

@Dzivo did you find a solution for displaying media info. I seem to have the same issue and not sure if I need to use another plugin to send this info.

Any update on this would really help.

Thanks

dpkpnm avatar Mar 10 '18 13:03 dpkpnm

Hi guys,

I made a fork of this and added the metadata over bluetooth for Android. I have tested it on Oreo and it seems to work. It also enables the info for Android Wear and also Google Assitant. https://github.com/neoassyrian/cordova-music-controls-plugin

It is also worth testing on older versions of Android.

If this works, I will submit a pull request.

neoassyrian avatar Jul 24 '18 12:07 neoassyrian

Facing the same issue of metadata not sending over Bluetooth for Android, but I guess the original target for this plugin does not include showing information over Bluetooth connection.

I've tried @neoassyrian 's fork but still, no information showed on the Bluetooth device (currently I'm making a Bluetooth car audio, showing the track name, artist, album and duration of the song). Maybe I'm using a wrong approach to play the media? I'm now using cordova-plugin-media & cordova-plugin-blueetoh-serial to make a music player.

Anyway, thanks for @neoassyrian effort on the issue, you really help me to figure out the reason why no information is displayed on the Bluetooth device.

Pakyyy avatar Dec 03 '18 04:12 Pakyyy

Facing the same issue of metadata not sending over Bluetooth for Android, but I guess the original target for this plugin does not include showing information over Bluetooth connection.

I've tried @neoassyrian 's fork but still, no information showed on the Bluetooth device (currently I'm making a Bluetooth car audio, showing the track name, artist, album and duration of the song). Maybe I'm using a wrong approach to play the media? I'm now using cordova-plugin-media & cordova-plugin-blueetoh-serial to make a music player.

Anyway, thanks for @neoassyrian effort on the issue, you really help me to figure out the reason why no information is displayed on the Bluetooth device.

What version of Android OS you tested it with?

neoassyrian avatar Dec 03 '18 04:12 neoassyrian

I'm currently testing on Android 9, but my target Android version is lower and I'll try to test the plugin on some with lower version ( < 8.0 maybe).

Pakyyy avatar Dec 03 '18 05:12 Pakyyy

Also tested on a device with Android 8.1.0, still no information showed on the Bluetooth device. (but those media button event work perfectly.)

Pakyyy avatar Dec 04 '18 07:12 Pakyyy

Removed and add the Android platform and plugin again, @neoassyrian 's fork work perfectly! A thousand thanks, you really make my day :) (Even tho I still need to figure out how to send the current play time to the device, the fork provided me a direction of it.)

In addition, some android version may also need this plugin together: https://www.npmjs.com/package/cordova-plugin-android-support-v4-jar As the Android version added by Cordova (or Android SDK?) miss this package to run the plugin.

Pakyyy avatar Dec 04 '18 10:12 Pakyyy

Hello @patrickpaky,

@neoassyrian 's fork worked in my app also perfectly. Now since the new version 2.2.0 I can't get it to run. The build fails:

\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:5: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat;

I found your comment for the cordova-plugin-android-support-v4-jar and those errors are gone, but I can't finish the build succesful.

`Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex`

How did you solve this? I've been struggeling around for days now. This error normally gets solved by using cordova clean and rebuild, but its not working in my case.

`Ionic:

ionic (Ionic CLI) : 4.5.0 (C:\Program Files\nodejs\node_modules\ionic) Ionic Framework : ionic-angular 3.9.2 @ionic/app-scripts : 3.2.1

Cordova:

cordova (Cordova CLI) : 8.1.2 ([email protected]) Cordova Platforms : android 7.1.4 Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 12 other plugins)

System:

Android SDK Tools : 26.1.1 (C:\Users\Medien\AppData\Local\Android\Sdk) NodeJS : v8.11.2 (C:\Program Files\nodejs\node.exe) npm : 6.4.1 OS : Windows 10`

wunschradio avatar Dec 09 '18 14:12 wunschradio

@wunschradio Try adding this package to your project. https://github.com/jwall149/cordova-multidex

BuddyLReno avatar Dec 10 '18 01:12 BuddyLReno

@BuddyLReno thank you for your suggestion. I installed the plugin and the AndroidManifest.xml will get changed but unfortunately it still runs into an error: `Execution failed for task ':transformClassesWithMultidexlistForDebug'.

java.io.IOException: Can't write [C:\IONIC\radioapp\platforms\android\build\intermediates\multi-dex\debug\componentClasses.jar] (Can't read [C:\Users\Medien.gradle\caches\modules-2\files-2.1\com.android.support\support-annotations\27.1.1\39ded76b5e1ce1c5b2688e1d25cdc20ecee32007\support-annotations-27.1.1.jar(;;;;;;**.class)] (Duplicate zip entry [support-annotations-27.1.1.jar:android/support/annotation/AnimRes.class]))`

What I am wondering about is that the new version 2.2.0 also does not work on a fresh install:

I build a new Ionic 3 project and add install cordova-plugin-music-controls with ionic cordova plugin add cordova-plugin-music-controls && npm install --save @ionic-native/music-controls add it to the app.module.ts: import {MusicControls} from "@ionic-native/music-controls"; providers: [ MusicControls, ... add the Android platform Using cordova-fetch for cordova-android@~7.1.1 Android project created with [email protected] and build the app with ionic cordova run android

...the build fails. Shouldn't this work out of the box?

`C:\IONIC\music-controls>ionic cordova run android

ionic-app-scripts build --target cordova --platform android [11:19:51] ionic-app-scripts 3.2.1 [11:19:51] build dev started ... [11:19:51] clean started ... [11:19:51] clean finished in less than 1 ms [11:19:51] copy started ... [11:19:51] deeplinks started ... [11:19:51] deeplinks finished in 15 ms [11:19:51] transpile started ... [11:19:55] transpile finished in 4.19 s [11:19:55] preprocess started ... [11:19:55] preprocess finished in less than 1 ms [11:19:55] webpack started ... [11:19:55] copy finished in 4.39 s [11:19:59] webpack finished in 3.91 s [11:19:59] sass started ... [11:20:00] sass finished in 1.27 s [11:20:00] postprocess started ... [11:20:00] postprocess finished in less than 1 ms [11:20:00] lint started ... [11:20:00] build dev finished in 9.52 s [11:20:03] lint finished in 2.80 s cordova run android Android Studio project detected ANDROID_HOME=C:\Users\Medien\AppData\Local\Android\Sdk JAVA_HOME=C:\Program Files\Java\jdk1.8.0_171 studio :wrapper

BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed Subproject Path: CordovaLib Subproject Path: app publishNonDefault is deprecated and has no effect anymore. All variants are now published. The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_37m4d6g9lytwghnjgskznr99k.run(C:\IONIC\music-controls\platforms\android\app\build.gradle:148) Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. :CordovaLib:preBuild UP-TO-DATE :CordovaLib:preDebugBuild UP-TO-DATE :CordovaLib:compileDebugAidl :CordovaLib:compileDebugRenderscript :CordovaLib:checkDebugManifest :CordovaLib:generateDebugBuildConfig :CordovaLib:prepareLintJar :CordovaLib:generateDebugResValues :CordovaLib:generateDebugResources :CordovaLib:packageDebugResources :CordovaLib:platformAttrExtractor :CordovaLib:processDebugManifest :CordovaLib:javaPreCompileDebug :CordovaLib:processDebugJavaRes NO-SOURCE :app:preBuild UP-TO-DATE :app:preDebugBuild :app:compileDebugAidl :CordovaLib:packageDebugRenderscript NO-SOURCE :app:compileDebugRenderscript :app:checkDebugManifest :app:generateDebugBuildConfig :app:prepareLintJar :app:generateDebugResValues :app:generateDebugResources :app:mergeDebugResources :app:createDebugCompatibleScreenManifests :app:processDebugManifest :app:splitsDiscoveryTaskDebug :app:compileDebugNdk NO-SOURCE :CordovaLib:mergeDebugShaders :CordovaLib:compileDebugShaders :CordovaLib:generateDebugAssets :CordovaLib:mergeDebugAssets :app:mergeDebugShaders :app:compileDebugShaders :app:generateDebugAssets :app:mergeDebugAssets :CordovaLib:compileDebugNdk NO-SOURCE :CordovaLib:mergeDebugJniLibFolders :CordovaLib:transformNativeLibsWithMergeJniLibsForDebug :CordovaLib:transformNativeLibsWithIntermediateJniLibsForDebug :app:mergeDebugJniLibFolders :app:processDebugJavaRes NO-SOURCE :app:validateSigningDebug :CordovaLib:processDebugResources :CordovaLib:generateDebugSources Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. :CordovaLib:compileDebugJavaWithJavac :CordovaLib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug :app:processDebugResources :app:generateDebugSources :app:javaPreCompileDebug C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:5: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:10: error: package MediaSessionCompat does not exist public class MediaSessionCallback extends MediaSessionCompat.Callback { ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:15: error: package android.support.v4.media does not exist import android.support.v4.media.MediaMetadataCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:16: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:17: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.PlaybackStateCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:45: error: cannot find symbol private MediaSessionCompat mediaSessionCompat; ^ symbol: class MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:18: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:20: error: cannot find symbol super.onPlay(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:27: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:29: error: cannot find symbol super.onPause(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:36: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:38: error: cannot find symbol super.onSkipToNext(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:45: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:47: error: cannot find symbol super.onSkipToPrevious(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:54: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:56: error: cannot find symbol super.onPlayFromMediaId(mediaId, extras); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:59: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:64: error: cannot find symbol return super.onMediaButtonEvent(mediaButtonIntent); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:131: error: cannot find symbol return super.onMediaButtonEvent(mediaButtonIntent); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:103: error: cannot find symbol this.mediaSessionCompat = new MediaSessionCompat(context, "cordova-music-controls-media-session", null, this.mediaButtonPendingIntent); ^ symbol: class MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:104: error: cannot find symbol this.mediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); ^ symbol: variable MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:104: error: cannot find symbol this.mediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); ^ symbol: variable MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:107: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:144: error: package MediaMetadataCompat does not exist final MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:144: error: package MediaMetadataCompat does not exist final MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:152: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, infos.track); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:154: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, infos.artist); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:156: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, infos.album); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:160: error: cannot find symbol metadataBuilder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, art); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:161: error: cannot find symbol metadataBuilder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:168: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PLAYING); ^ symbol: variable PlaybackStateCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:170: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:182: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PLAYING); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:184: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:225: error: package PlaybackStateCompat does not exist PlaybackStateCompat.Builder playbackstateBuilder = new PlaybackStateCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:225: error: package PlaybackStateCompat does not exist PlaybackStateCompat.Builder playbackstateBuilder = new PlaybackStateCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:226: error: cannot find symbol if( state == PlaybackStateCompat.STATE_PLAYING ) { ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:228: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:229: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:230: error: cannot find symbol playbackstateBuilder.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 1.0f); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:233: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:234: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:235: error: cannot find symbol playbackstateBuilder.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 0); ^ symbol: variable PlaybackStateCompat location: class MusicControls Note: Some input files use or override a deprecated API. :app:compileDebugJavaWithJavac FAILED Note: Recompile with -Xlint:deprecation for details. 51 errors

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

  • Get more help at https://help.gradle.org

38 actionable tasks: 38 executed BUILD FAILED in 12s cmd: Command failed with exit code 1 Error output: Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:5: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:10: error: package MediaSessionCompat does not exist public class MediaSessionCallback extends MediaSessionCompat.Callback { ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:15: error: package android.support.v4.media does not exist import android.support.v4.media.MediaMetadataCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:16: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:17: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.PlaybackStateCompat; ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:45: error: cannot find symbol private MediaSessionCompat mediaSessionCompat; ^ symbol: class MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:18: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:20: error: cannot find symbol super.onPlay(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:27: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:29: error: cannot find symbol super.onPause(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:36: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:38: error: cannot find symbol super.onSkipToNext(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:45: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:47: error: cannot find symbol super.onSkipToPrevious(); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:54: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:56: error: cannot find symbol super.onPlayFromMediaId(mediaId, extras); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:59: error: method does not override or implement a method from a supertype @Override ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:64: error: cannot find symbol return super.onMediaButtonEvent(mediaButtonIntent); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:131: error: cannot find symbol return super.onMediaButtonEvent(mediaButtonIntent); ^ symbol: variable super location: class MediaSessionCallback C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:103: error: cannot find symbol this.mediaSessionCompat = new MediaSessionCompat(context, "cordova-music-controls-media-session", null, this.mediaButtonPendingIntent); ^ symbol: class MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:104: error: cannot find symbol this.mediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); ^ symbol: variable MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:104: error: cannot find symbol this.mediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); ^ symbol: variable MediaSessionCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:107: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:144: error: package MediaMetadataCompat does not exist final MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:144: error: package MediaMetadataCompat does not exist final MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:152: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, infos.track); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:154: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, infos.artist); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:156: error: cannot find symbol metadataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, infos.album); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:160: error: cannot find symbol metadataBuilder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, art); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:161: error: cannot find symbol metadataBuilder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art); ^ symbol: variable MediaMetadataCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:168: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PLAYING); ^ symbol: variable PlaybackStateCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:170: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:182: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PLAYING); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:184: error: cannot find symbol setMediaPlaybackState(PlaybackStateCompat.STATE_PAUSED); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:225: error: package PlaybackStateCompat does not exist PlaybackStateCompat.Builder playbackstateBuilder = new PlaybackStateCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:225: error: package PlaybackStateCompat does not exist PlaybackStateCompat.Builder playbackstateBuilder = new PlaybackStateCompat.Builder(); ^ C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:226: error: cannot find symbol if( state == PlaybackStateCompat.STATE_PLAYING ) { ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:227: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:228: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:229: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:230: error: cannot find symbol playbackstateBuilder.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 1.0f); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:232: error: cannot find symbol playbackstateBuilder.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:233: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID | ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:234: error: cannot find symbol PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH); ^ symbol: variable PlaybackStateCompat location: class MusicControls C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MusicControls.java:235: error: cannot find symbol playbackstateBuilder.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 0); ^ symbol: variable PlaybackStateCompat location: class MusicControls Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. 51 errors

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

  • Get more help at https://help.gradle.org

BUILD FAILED in 12s [ERROR] An error occurred while running subprocess cordova.

    cordova run android exited with exit code 1.

    Re-running this command with the --verbose flag may provide more information.

`

then adding cordova-plugin-android-support-v4-jar with ionic cordova plugin add cordova-plugin-android-support-v4-jar && npm install --save cordova-plugin-android-support-v4-jar I get `Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex `

adding cordova-multidex with ionic cordova plugin add https://github.com/jwall149/cordova-multidex.git && npm install --save https://github.com/jwall149/cordova-multidex.git I get `Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.

java.io.IOException: Can't write [C:\IONIC\music-controls\platforms\android\app\build\intermediates\multi-dex\debug\componentClasses.jar] (Can't read [C:\IONIC\music-controls\platforms\android\app\build\intermediates\transforms\desugar\debug\3.jar(;;;;;;**.class)] ( Duplicate zip entry [3.jar:android/support/annotation/AnimRes.class])) `

wunschradio avatar Dec 10 '18 10:12 wunschradio

Try using android 6.4.0. I know that there was some changes made to the newer version of cordova-android but I've not worked with it yet.

BuddyLReno avatar Dec 10 '18 13:12 BuddyLReno

Already tried before and just did again with a clean project :( I get the exact same errors.

`Ionic:

ionic (Ionic CLI) : 4.5.0 (C:\Program Files\nodejs\node_modules\ionic) Ionic Framework : ionic-angular 3.9.2 @ionic/app-scripts : 3.2.1

Cordova:

cordova (Cordova CLI) : 8.1.2 ([email protected]) Cordova Platforms : android 6.4.0 Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 5 other plugins)

System:

Android SDK Tools : 26.1.1 (C:\Users\Medien\AppData\Local\Android\Sdk) NodeJS : v8.11.2 (C:\Program Files\nodejs\node.exe) npm : 6.4.1 OS : Windows 10 `

wunschradio avatar Dec 10 '18 13:12 wunschradio

@BuddyLReno thank you for your suggestion. I installed the plugin and the AndroidManifest.xml will get changed but unfortunately it still runs into an error: `Execution failed for task ':transformClassesWithMultidexlistForDebug'.

java.io.IOException: Can't write [C:\IONIC\radioapp\platforms\android\build\intermediates\multi-dex\debug\componentClasses.jar] (Can't read [C:\Users\Medien.gradle\caches\modules-2\files-2.1\com.android.support\support-annotations\27.1.1\39ded76b5e1ce1c5b2688e1d25cdc20ecee32007\support-annotations-27.1.1.jar(;;;;;;**.class)] (Duplicate zip entry [support-annotations-27.1.1.jar:android/support/annotation/AnimRes.class]))`

What I am wondering about is that the new version 2.2.0 also does not work on a fresh install:

I build a new Ionic 3 project and add install cordova-plugin-music-controls with ionic cordova plugin add cordova-plugin-music-controls && npm install --save @ionic-native/music-controls add it to the app.module.ts: import {MusicControls} from "@ionic-native/music-controls"; providers: [ MusicControls, ... add the Android platform Using cordova-fetch for cordova-android@~7.1.1 Android project created with [email protected] and build the app with ionic cordova run android

...the build fails. Shouldn't this work out of the box?

`C:\IONIC\music-controls>ionic cordova run android

ionic-app-scripts build --target cordova --platform android [11:19:51] ionic-app-scripts 3.2.1 [11:19:51] build dev started ... [11:19:51] clean started ... [11:19:51] clean finished in less than 1 ms [11:19:51] copy started ... [11:19:51] deeplinks started ... [11:19:51] deeplinks finished in 15 ms [11:19:51] transpile started ... [11:19:55] transpile finished in 4.19 s [11:19:55] preprocess started ... [11:19:55] preprocess finished in less than 1 ms [11:19:55] webpack started ... [11:19:55] copy finished in 4.39 s [11:19:59] webpack finished in 3.91 s [11:19:59] sass started ... [11:20:00] sass finished in 1.27 s [11:20:00] postprocess started ... [11:20:00] postprocess finished in less than 1 ms [11:20:00] lint started ... [11:20:00] build dev finished in 9.52 s [11:20:03] lint finished in 2.80 s cordova run android Android Studio project detected ANDROID_HOME=C:\Users\Medien\AppData\Local\Android\Sdk JAVA_HOME=C:\Program Files\Java\jdk1.8.0_171 studio :wrapper

BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed Subproject Path: CordovaLib Subproject Path: app publishNonDefault is deprecated and has no effect anymore. All variants are now published. The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_37m4d6g9lytwghnjgskznr99k.run(C:\IONIC\music-controls\platforms\android\app\build.gradle:148) Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. :CordovaLib:preBuild UP-TO-DATE :CordovaLib:preDebugBuild UP-TO-DATE :CordovaLib:compileDebugAidl :CordovaLib:compileDebugRenderscript :CordovaLib:checkDebugManifest :CordovaLib:generateDebugBuildConfig :CordovaLib:prepareLintJar :CordovaLib:generateDebugResValues :CordovaLib:generateDebugResources :CordovaLib:packageDebugResources :CordovaLib:platformAttrExtractor :CordovaLib:processDebugManifest :CordovaLib:javaPreCompileDebug :CordovaLib:processDebugJavaRes NO-SOURCE :app:preBuild UP-TO-DATE :app:preDebugBuild :app:compileDebugAidl :CordovaLib:packageDebugRenderscript NO-SOURCE :app:compileDebugRenderscript :app:checkDebugManifest :app:generateDebugBuildConfig :app:prepareLintJar :app:generateDebugResValues :app:generateDebugResources :app:mergeDebugResources :app:createDebugCompatibleScreenManifests :app:processDebugManifest :app:splitsDiscoveryTaskDebug :app:compileDebugNdk NO-SOURCE :CordovaLib:mergeDebugShaders :CordovaLib:compileDebugShaders :CordovaLib:generateDebugAssets :CordovaLib:mergeDebugAssets :app:mergeDebugShaders :app:compileDebugShaders :app:generateDebugAssets :app:mergeDebugAssets :CordovaLib:compileDebugNdk NO-SOURCE :CordovaLib:mergeDebugJniLibFolders :CordovaLib:transformNativeLibsWithMergeJniLibsForDebug :CordovaLib:transformNativeLibsWithIntermediateJniLibsForDebug :app:mergeDebugJniLibFolders :app:processDebugJavaRes NO-SOURCE :app:validateSigningDebug :CordovaLib:processDebugResources :CordovaLib:generateDebugSources Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. :CordovaLib:compileDebugJavaWithJavac :CordovaLib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug :app:processDebugResources :app:generateDebugSources :app:javaPreCompileDebug C:\IONIC\music-controls\platforms\android\app\src\main\java\com\homerours\musiccontrols\MediaSessionCallback.java:5: error: package android.support.v4.media.session does not exist import android.support.v4.media.session.MediaSessionCompat; ^

It seems that you've not yet installed the support-v4 plugin" in your new project, so Cordova tells you there is something missing when it tries to run the .java file.

And for the `Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' error, as I remember, I used cordova clean and build the android again successfully. If it does not work for you maybe you can try removing the android and add it again? (because I solved this error by one line of -- cordova clean, so I didn't really do much research about it.)

Pakyyy avatar Dec 11 '18 08:12 Pakyyy

@patrickpaky Thank you for your response. The v4-plugin was installed later. Sorry for my very long build posts. I don't know how to shrink them into an accordion field here.

My gradle version is 5. Maybe this causes the problem? I am trying to downgrade but unsuccesful yet. But if I run ls platforms/android/.gradle I get 4.1 4.6 buildOutputCleanup

I am still stucked with this problem. By the way @neoassyrian fork worked well.

wunschradio avatar Dec 11 '18 17:12 wunschradio

I think the issue is Cordova Android. I've not had time to look into what needs to happen to update it.

BuddyLReno avatar Dec 11 '18 19:12 BuddyLReno

I have the forked code from the PR merged on my repo and running without issue.

Android platform 7.1.4 (latest as of writing). Targeting api 29 (pie) Add the gradle release plugin, it lets gradle handle conflicts when different plugins request specific versions of support libraries instead of getting the conflicts you are seeing.

If in doubt Cordova clean android then Cordova prepare android, or remove your platform and plugins and readd to nke sure all is added correctly.

ghenry22 avatar Dec 18 '18 06:12 ghenry22

Have been testing this on an Android 8 Huawei P20 for the last few weeks as I’ve been driving around and @neoassyrian’s fork is working perfectly displaying metadata over Bluetooth.

Suggest merging his PR in ASAP as this is good functionality for this plugin.

ghenry22 avatar Dec 26 '18 00:12 ghenry22