android media player background service

292 views
Skip to first unread message

Degenerate Tech

unread,
Jun 24, 2021, 5:04:11 AM6/24/21
to Kivy users support
android media player working in app's code but i want play music in background 
.when i am starting background service service.py no audio output and service getting stop.
#######MediaPlayer class  
from jnius import autoclass
JMediaPlayer = autoclass('android.media.MediaPlayer')
AudioManager = autoclass('android.media.AudioManager')
Log=autoclass('android.util.Log')
class MediaPlayer(object):
    mPlayer = JMediaPlayer()
    content = None

    def raw(self):
        return self.mPlayer

    def play(self, content):
        self.content = str(content)
        try:
            self.mPlayer.stop()
            self.mPlayer.reset()
        except:
            pass
        self.mPlayer.setDataSource(self.content)
        self.mPlayer.prepare()
        self.mPlayer.start()


##########in service.py
mp=MediaPlayer()
mp.play("/data/user/0/org.kivy.tube/files/app/file.mp3")

###########logs 
thon  : service started
06-24 14:26:46.994 18018 18037 I python  : Initializing Python for Android
06-24 14:26:46.994 18018 18037 I python  : Setting additional env vars from p4a_env_vars.txt
06-24 14:26:46.994 18018 18037 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
06-24 14:26:46.994 18018 18037 I python  : /data/user/0/org.kivy.tube/files/app
06-24 14:26:46.995 18018 18037 I python  : Preparing to initialize python
06-24 14:26:46.995 18018 18037 I python  : _python_bundle dir exists
06-24 14:26:46.995 18018 18037 I python  : calculated paths to be...
06-24 14:26:46.995 18018 18037 I python  : /data/user/0/org.kivy.tube/files/app/_python_bundle/stdlib.zip:/data/user/0/org.kivy.tube/files/app/_python_bundle/modules
06-24 14:26:46.995 18018 18037 I python  : set wchar paths...
06-24 14:26:47.105 18018 18037 I python  : Initialized python
06-24 14:26:47.105 18018 18037 I python  : AND: Init threads
06-24 14:26:47.109 18018 18037 I python  : AND: Ran string
06-24 14:26:47.109 18018 18037 I python  : Run user program, change dir and execute entrypoint
06-24 14:26:49.298 18018 18037 I python  : Python for android ended.



Robert

unread,
Jun 24, 2021, 12:25:52 PM6/24/21
to Kivy users support
Take the filters off logcat, to see what is happening.

1) A service is a separate memory space, the MediaPlayer class needs to be in service.py
2) In order to pass messages to the service you need a loop that listens
3) If you have a message loop, I expect the MediaPlayer instance will need to be in a thread
4) For performance UI reasons, all work in a service should be done in a thread.

Degenerate Tech

unread,
Jun 24, 2021, 1:04:25 PM6/24/21
to Kivy users support
how to get logs from service.py ?

Degenerate Tech

unread,
Jun 24, 2021, 1:06:44 PM6/24/21
to Kivy users support

06-24 22:35:27.909  8854  8854 V Monotype: SetAppTypeFace- try to flip, app = org.kivy.tube
06-24 22:35:28.085  8854  8873 V pythonutil: Library loading error: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g=
=/base.apk"],nativeLibraryDirectories=[/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/lib/arm, /data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/base.apk!/lib/armeabi-
v7a, /system/lib, /vendor/lib]]] couldn't find "libpython3.5m.so"
06-24 22:35:28.087  8854  8873 V pythonutil: Library loading error: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g=
=/base.apk"],nativeLibraryDirectories=[/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/lib/arm, /data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/base.apk!/lib/armeabi-
v7a, /system/lib, /vendor/lib]]] couldn't find "libpython3.6m.so"
06-24 22:35:28.089  8854  8873 V pythonutil: Library loading error: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g=
=/base.apk"],nativeLibraryDirectories=[/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/lib/arm, /data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/base.apk!/lib/armeabi-
v7a, /system/lib, /vendor/lib]]] couldn't find "libpython3.7m.so"
06-24 22:35:28.096  8854  8873 V pythonutil: Library loading error: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g=
=/base.apk"],nativeLibraryDirectories=[/data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/lib/arm, /data/app/org.kivy.tube-RUxP2qjs01XKEORnZg8i9g==/base.apk!/lib/armeabi-
v7a, /system/lib, /vendor/lib]]] couldn't find "libpython3.9.so"
06-24 22:35:28.100  8854  8873 I python  : /data/user/0/org.kivy.tube/files/app
06-24 22:35:28.100  8854  8873 I python  : /data/user/0/org.kivy.tube/files/app/_python_bundle/stdlib.zip:/data/user/0/org.kivy.tube/files/app/_python_bundle/modules
06-24 22:35:28.230  8854  8873 I Pong    : Android path ['.', '/data/user/0/org.kivy.tube/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.kivy.tube/files/app/_p
ython_bundle/modules', '/data/user/0/org.kivy.tube/files/app/_python_bundle/site-packages']
06-24 22:35:28.231  8854  8873 I Pong    : os.environ is environ({'PATH': '/sbin:/system/sbin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin', 'DOWNLOAD_CACHE': '/da
ta/cache', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'EXTERNAL_STORAG
E': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/system/framework/QPerformance.jar:/system/framework/core-oj.jar:/system/framework/core-libart.jar:/sys
tem/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/legacy-test.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framewor
k/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/frame
work/org.apache.http.legacy.boot.jar:/system/framework/android.hidl.base-V1.0-java.jar:/system/framework/android.hidl.manager-V1.0-java.jar:/system/framework/tcmiface.j
ar:/system/framework/WfdCommon.jar:/system/framework/oem-services.jar:/system/framework/qcom.fmradio.jar:/system/framework/telephony-ext.jar', 'SYSTEMSERVERCLASSPATH':
'/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar', 'ANDROID_SOCKET_zygote_secondary': '9', 'ANDROID_PRIVATE': '
/data/user/0/org.kivy.tube/files', 'ANDROID_ARGUMENT': '/data/user/0/org.kivy.tube/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.kivy.tube/files/app', 'ANDROID_ENTR
YPOINT': 'service.py', 'PYTHONOPTIMIZE': '2', 'PYTHON_NAME': 'Pong', 'PYTHONHOME': '/data/user/0/org.kivy.tube/files/app', 'PYTHONPATH': '/data/user/0/org.kivy.tube/fil
es/app:/data/user/0/org.kivy.tube/files/app/lib', 'PYTHON_SERVICE_ARGUMENT': '', 'P4A_BOOTSTRAP': 'SDL2', 'ANDROID_UNPACK': '/data/user/0/org.kivy.tube/files/app', 'P4A
_IS_WINDOWED': 'False', 'P4A_ORIENTATION': 'sensor', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
06-24 22:35:33.274  2634 11690 I ActivityManager: Process org.kivy.tube:service_Pong (pid 8854) has died: prcp FGS  
06-24 22:35:33.274  2634 11690 W ActivityManager: App Op not allow to restart app org.kivy.tube/10750


On Thursday, June 24, 2021 at 9:55:52 PM UTC+5:30 Robert wrote:

Degenerate Tech

unread,
Jun 24, 2021, 1:07:51 PM6/24/21
to Kivy users support
see this logs 

Robert

unread,
Jun 24, 2021, 3:08:43 PM6/24/21
to Kivy users support
Look for your service name.
06-24 22:35:28.231  8854  8873 I Pong    :
Perhaps your service simply finished?
I don't know enough about MediaPlayer to answer that.

Degenerate Tech

unread,
Jun 24, 2021, 3:11:28 PM6/24/21
to Kivy users support
###############in service.py
#from pykivdroid.media import MediaPlayer
#import logging
import threading


from jnius import autoclass

JMediaPlayer = autoclass('android.media.MediaPlayer')
AudioManager = autoclass('android.media.AudioManager')
Log=autoclass('android.util.Log')
class MediaPlayer(object):
    mPlayer = JMediaPlayer()
    content = None

    def raw(self):
        return self.mPlayer

    def play(self, content):
        self.content = str(content)
        try:
            self.mPlayer.stop()
            self.mPlayer.reset()
        except:
            pass
        self.mPlayer.setDataSource(self.content)
        self.mPlayer.prepare()
        self.mPlayer.start()

    def pause(self):
        self.mPlayer.pause()

    def resume(self):
        self.mPlayer.start()

    def stop(self):
        self.mPlayer.stop()

    def stream(self, content):
        self.content = str(content)
        self.mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)
        try:
            self.mPlayer.stop()
            self.mPlayer.reset()
        except:
            pass
        self.mPlayer.setDataSource(self.content)
        self.mPlayer.prepare()
        self.mPlayer.start()

    def get_duration(self):
        if self.content:
            return self.mPlayer.getDuration()

    def current_position(self):
        if self.content:
            return self.mPlayer.getCurrentPosition()

    def seek(self, value):
        try:
            self.mPlayer.seekTo(int(value) * 1000)
        except:
            pass

    def do_loop(self, loop=False):
        if not loop:
            self.mPlayer.setLooping(False)
        else:
            self.mPlayer.setLooping(True)

    def is_playing(self):
        return self.mPlayer.isPlaying



 


def call():
    mp=MediaPlayer()
    mp.play("/sdcard/joker.mp3")
  
threading.Thread(target=call(),daemon=True).start()
#call()

Degenerate Tech

unread,
Jun 24, 2021, 3:14:06 PM6/24/21
to Kivy users support
 MediaPlayer class is working well  in app's thread i have tested.

can you please write simple example .i have tried lots of time but i have  failed .

Degenerate Tech

unread,
Jun 24, 2021, 4:23:48 PM6/24/21
to Kivy users support
see logs of service.py ,service is now properly starting but mp3 not playing 
adb logcat *:S Pong:D
--------- beginning of crash
--------- beginning of system
--------- beginning of main
06-25 01:52:30.291  8649  8666 I Pong    : testing python print redirection
06-25 01:52:30.293  8649  8666 I Pong    : Android path ['.', '/data/user/0/org.kivy.tube/files/app/_python_bundle/stdlib.zip', '/data/user/0/org.kivy.tube/files/app/_p
ython_bundle/modules', '/data/user/0/org.kivy.tube/files/app/_python_bundle/site-packages']
06-25 01:52:30.294  8649  8666 I Pong    : os.environ is environ({'PATH': '/sbin:/system/sbin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin', 'DOWNLOAD_CACHE': '/da

ta/cache', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'EXTERNAL_STORAG
E': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/system/framework/QPerformance.jar:/system/framework/core-oj.jar:/system/framework/core-libart.jar:/sys
tem/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/legacy-test.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framewor
k/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/frame
work/org.apache.http.legacy.boot.jar:/system/framework/android.hidl.base-V1.0-java.jar:/system/framework/android.hidl.manager-V1.0-java.jar:/system/framework/tcmiface.j
ar:/system/framework/WfdCommon.jar:/system/framework/oem-services.jar:/system/framework/qcom.fmradio.jar:/system/framework/telephony-ext.jar', 'SYSTEMSERVERCLASSPATH':
'/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar', 'ANDROID_SOCKET_zygote_secondary': '9', 'ANDROID_PRIVATE': '
/data/user/0/org.kivy.tube/files', 'ANDROID_ARGUMENT': '/data/user/0/org.kivy.tube/files/app', 'ANDROID_APP_PATH': '/data/user/0/org.kivy.tube/files/app', 'ANDROID_ENTR
YPOINT': 'service.py', 'PYTHONOPTIMIZE': '2', 'PYTHON_NAME': 'Pong', 'PYTHONHOME': '/data/user/0/org.kivy.tube/files/app', 'PYTHONPATH': '/data/user/0/org.kivy.tube/fil
es/app:/data/user/0/org.kivy.tube/files/app/lib', 'PYTHON_SERVICE_ARGUMENT': '', 'P4A_BOOTSTRAP': 'SDL2', 'ANDROID_UNPACK': '/data/user/0/org.kivy.tube/files/app', 'P4A
_IS_WINDOWED': 'False', 'P4A_ORIENTATION': 'sensor', 'P4A_NUMERIC_VERSION': 'None', 'P4A_MINSDK': '21', 'LC_CTYPE': 'C.UTF-8'})
06-25 01:52:30.294  8649  8666 I Pong    : Android kivy bootstrap done. __name__ is __main__

Robert

unread,
Jun 24, 2021, 4:49:12 PM6/24/21
to Kivy users support
You are not the first person to ask me for an example of background music playing
I do not have one, or any services examples.
I have not tried to do this.
I have documented everything I was able to figure out about services , but do not know what all MediaPlayer issues are.

It is very unlikely I will get to this.
Keep trying , it might be a popular youtube video.

Degenerate Tech

unread,
Jun 24, 2021, 4:49:20 PM6/24/21
to Kivy users support
@Robert 
yes ..solved hurrah!!!!!!!!!!!!!!
after many time of failure ..it is done .
now background  music playing in android by service..
i am testing in android 5.

Robert

unread,
Jun 24, 2021, 4:55:06 PM6/24/21
to Kivy users support
Excellent........well done.  Did you make the video yet? ;)

Degenerate Tech

unread,
Jun 24, 2021, 4:57:40 PM6/24/21
to Kivy users support
youtube video tutorial on this ?
ans :No 
.but i will do it .
Now i am testing another android 8

Degenerate Tech

unread,
Jun 24, 2021, 5:18:00 PM6/24/21
to Kivy users support
@Robert can you please tell me what is the role of argument  here ? can i pass python object to service.py,
or i can only pass string to service.py ?
def start_service(self):
        if platform == 'android':
            service = autoclass(SERVICE_NAME)
            ps = autoclass('org.kivy.android.PythonActivity')
            Activity=ps.mActivity
            #ps.mService.setAutoRestartService(True)
            argument = ""
            service.start(Activity, argument)
            self.service = service
            print("service started")

Degenerate Tech

unread,
Jun 24, 2021, 7:05:03 PM6/24/21
to Kivy users support
@Robert 
One thing I observed .I have played song of length 10 min but .
After 5 min it is stopped..
I think Service getting killed...🤔🤔🤔

Robert

unread,
Jun 24, 2021, 7:20:08 PM6/24/21
to Kivy users support
I think the argument is not used and not passed to the service.
To be cetain you an work though these files:

Gregorius Willson

unread,
Jun 24, 2021, 9:31:36 PM6/24/21
to Kivy users support
Hello Mr can i see the zip or Github pls 
thanks

Degenerate Tech

unread,
Jun 25, 2021, 7:20:10 AM6/25/21
to Kivy users support
some points i have noticed 
I have tested background service and playing mp3 without notification.
It is Running well in android 5
But
In Android 8 .it getting stop after some time !!!!!!!!!!!! 
I think in android 8 and more we have to show notification .while background service is running  .so user can know it is running or not .

Degenerate Tech

unread,
Jun 25, 2021, 7:43:58 AM6/25/21
to Kivy users support
foreground service solved stopping  in android 8.
yes . i have learned many things .
.thnx  @Robert 

Reply all
Reply to author
Forward
0 new messages