IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> python kivy app开发 播放声音 音乐 -> 正文阅读

[移动开发]python kivy app开发 播放声音 音乐

使用kivy实现声音播放,看似简单实则有坑, 又是柿子翻阅大量外网资料后刨坑总结。

播放音频可以使用他的SoundLoader组件,简单两行就可以实现声音播放。如果你只是在PC端运行那么照抄以下代码就可以了

PC端播放

from kivy.network.urlrequest import UrlRequest
path="./sound/apple.wav" # 可以是本地文件, 也可以是网址http://XXX/apple.wav,也可以是mp3
b=SoundLoader.load(filename=path) # 载入文件
b.play() # 播放声音

移动端播放本地文件

但是如果你想要在Android上进行本地声音播放,需要注意下面的问题:
1、目前Kivy只支持 wav格式

2、在打包APK的时候需要注意修改相关的参数,在打包环境中输入 buildozer init 生成初始化参数表,不知道怎么用buildozer怎么打包的,请先看buildozer 打包 APK 的教程。找到下面的参数把wav 加进去。 Linux 环境下可以用vim 打开文件进行编辑

3、下面两端都要改不要漏了,这两段不是连着的


# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas,wav
# (list) List of inclusions using pattern matching
source.include_patterns = assets/*,images/*.png,sound/*.wav

移动端播放网页音频/服务器音频

但是如果你想要在Android上进行网页/服务器后端声音播放,需要注意下面的问题:

Kivy 的播放器不支持流媒体!!!!,所以需要下载后再播放

这里我创建了一个下载按钮一个播放按钮,点击玩下载后等一会儿,再点击播放按钮就可以播放声音了,效果如下
在这里插入图片描述

python 主程序代码供参考
这里会看到 Import os 和 from android.permissions import 注意 android 这个包是不需要安装的,在 Buildozer 和 P4a里自带的,只有在android端才能生效。所以需要先判断系统环境

另外同时需要对spec 文件修改

main.py 主程序代码如下,


from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
from kivy.network.urlrequest import UrlRequest
from kivy.core.audio import SoundLoader
from kivy.utils import platform
#import requests
import os
if platform == "android":
    from android.permissions import request_permissions, Permission
    request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])


url="http://106.14.124.112:8080/download_voice_en/apple.wav"

# 构建窗口按钮,一个下载按钮,一个播放按钮
kv = Builder.load_string("""

#:import utils kivy.utils
<test>:
    name:"test"
    BoxLayout:
        Button:
            text: "download"
            on_release:root.buttonClicked()
        Button:
            text: "apple"
            on_release:root.sound()
                        """)

class test(Screen):
    def buttonClicked(self):
        a= UrlRequest(url, file_path='apple.wav')
        print("done download")
    def sound(self):
        b=SoundLoader.load(filename='./apple.wav')
        b.play()
        print("done sound")

sm = ScreenManager()  # 创建窗口管理器
screens = [test(name="test")]

for screen in screens:  # 为每一个窗口生成容器
    sm.add_widget(screen)


class ScreenApp(App):
    def build(self):
        return sm


ScreenApp().run()



spec 文件中需要修改 permission,获取网络及读写权限


# (list) Permissions
android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:49:24  更:2021-11-11 12:50:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:32:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码