我正在尝试在 Kivy for Android 中创建一个简单的闹钟。
我已经在后台应用程序和用户界面 (UI) 之间建立了通信:后台应用程序在指定的时间向 UI 发送数据。
但我无法从服务中生成声音或振动。这一切都在 UI 上运行,而不是在服务上运行。
我确实尝试了 kivy.core.audio 中的 sound.play()。我从 logcat 得到这个:
AttributeError: 'NoneType' object has no attribute 'Play'
如果我用jnius震动也一样:
AttributeError: 'NoneType' object has no attribute 'getSystemService'
我确实尝试过使用 pyjnius 进行振动 this way和我的声音,就像我说的那样在 UI 上工作,就像这样:
from kivy.core.audio import SoundLoader
sound = SoundLoader.load('sound.wav')
然后:
sound.play()
更新:
Lafadas 的更新后声音仍然没有播放,但错误后功能继续并且不会立即中断。
在 logcat 中,如果相关的话,我会看到类似这样的内容:
Kivy service log:
[INFO ] Logger: Record log in /storage/emulated/0/org.alkoWatch/service/.kivy/logs/kivy_14-12-02_3.txt
[ INFO ] Kivy v1.8.0
[INFO ] OSC: using <thread> for socket
[INFO ] Audio: Providers: (audio_pygst, audio_sdl, audio_pygame ignored)
[WARNING ] Audio: Unable to find a loader for <sound.wav>
[DEBUG ] OSC: Start thread <0.0.0.0:3000>
[INFO ] OSC: listening for Tuio on 0.0.0.0:3000
请您参考如下方法:
刚刚弄清楚如何使用通知音量而不是几乎总是安静的普通媒体。 以下是我如何在 android 上使用 python 获得良好、响亮的通知声音:
from jnius import autoclass
MediaPlayer = autoclass('android.media.MediaPlayer')
AudioManager = autoclass('android.media.AudioManager')
mPlayer = MediaPlayer()
mPlayer.setDataSource('/storage/sdcard0/Download/beep1.wav')
mPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION)
mPlayer.prepare()
mPlayer.start()
mPlayer.release()
