多媒体
# 包
from ascript.android import media
音视频播放,录制,邮件发送 等操作
方法
音量调节
调节音量大小(1-100)
- 函数
media.volume(percent:int,type:int =3)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
percent | int | 是 | 音量大小 1-100之间 |
type | int | 否 | 音量类型,默认为3,见下表 |
什么是音量类型?
在Android 系统中,包含了很多音量类型,如 音乐,系统通知,闹钟,电话等等.不同的类型,都有自己的音量
该参数来自 android.media.AudioManager
音量类型 | 备注 |
---|---|
音乐回放即媒体音量 | 3 |
窗口顶部状态栏Notification | 5 |
警告 | 4 |
铃声 | 2 |
系统 | 1 |
通话 | 0 |
- 示例
# 设置音乐媒体音量 为80%
# 导包
from ascript.android import media
media.volume(80)
# 设置通话音量为 60%
# 导包
from ascript.android import media
media.volume(60,0)
音量获取
获取音量大小
- 函数
media.get_volume(type:int =3)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
type | int | 否 | 音量类型,默认为3,见下表 |
什么是音量类型?
在Android 系统中,包含了很多音量类型,如 音乐,系统通知,闹钟,电话等等.不同的类型,都有自己的音量
该参数来自 android.media.AudioManager
音量类型 | 备注 |
---|---|
音乐回放即媒体音量 | 3 |
窗口顶部状态栏Notification | 5 |
警告 | 4 |
铃声 | 2 |
系统 | 1 |
通话 | 0 |
- 示例
# 获取媒体音量 音量大小
# 导包
from ascript.android import media
num = media.get_volume(3)
print(num)
语音朗读
将文本用语音朗读出来
- 函数
media.talk(msg:str)
部分设备不支持
部分设备缺少语音库,因此不支持,如(雷电模拟器)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
text | string | 是 | 要朗读的文本 |
- 示例
# 文本转语音朗读出来
#导包
from ascript.android import media
media.talk('自在老师你好')
播放音频
播放音频文件
- 函数
media.play(path:str,callback=None)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
path | string | 必填 | 要播放的音频文件 |
callback | class | 可选 | 一个回调对象 回调对象格式见案例 |
- 示例
# 播放一个音频文件
# 导包
from ascript.android import media
from ascript.android.system import R
media.play(R.res("/media/aodi.wav"))
# 播放音频文件 回调案例
from ascript.android import media
from ascript.android.system import R
class listener:
def prepare(self,player):
# 获取音频时长
dur = player.getDuration()
print(dur)
print('准备完毕')
# 带监听器,我们需要调用start方法
player.start()
def completion(self):
print('播放完毕')
# 播放一 个音频
media.play(R.res("/media/aodi.wav"),listener())
停止音频
当开始播放 时候,我们可以通过 callback拿到 player对象,从而停止音频
player.stop()
- 示例
# 播放音频文件开始后,停止音频
from ascript.android import media
from ascript.android.system import R
import time
class listener:
def prepare(self,player):
# 获取音频时长
dur = player.getDuration()
print(dur)
print('准备完毕')
# 带监听器,我们需要调用start方法
player.start()
time.sleep(1)
# 等待1秒后,立刻停止音频播放
player.stop()
def completion(self):
print('播放完毕')
# 播放一个音频
media.play(R.res("/media/bili.WAV"),listener())
print("123")
倍速播放
倍速播放,需要通过player(Android MediaPlayer) 对象,获取param,并设置速度
- 示例
# 倍速播放音频文件
from ascript.android import media
from ascript.android.system import R
import time
class listener:
def prepare(self,player):
# 获取音频时长
dur = player.getDuration()
print(dur)
# 更改播放速度
playparam = player.getPlaybackParams()
playparam.setSpeed(1.0) #2倍速
player.setPlaybackParams(playparam)
print('准备完毕')
# 带监听器,我们需要调用start方法
player.start()
def completion(self):
print('播放完毕')
# 播放一个音频
media.play(R.res("/media/bili.WAV"),listener())
print("123")
获取录音对象
获取录制音频对象
- 函数
media.recode(path:str,time=None):
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
path | string | 必填 | 录制音频的文件放置路径,如果文件不存在,会自动创建 |
time | class | 可选 | 录制音频的时长,如果不填写.则直到stop调用后才停止 |
- 返回值
该方法会返回一个 MediaRecoder java对象.
录音对象(MediaRecoder)
我们可以调用该对象的方法,控制开始录音,结束录音,设置录音时长,设置录音文件最大长度 等..
下面是该对象的常用方法:
常用方法 | 备注 |
---|---|
prepare() | 在设置好所有参数后,调用该方法. |
start() | 开始录制音频 |
stop() | 结束录制音频 |
更多方法请参阅 android.media.MediaRecorder 使用相关文档.
# 案例: 录制音频,并在3秒后调用stop停止
from ascript.android import media
import time
m = media.recode("/sdcard/1.acc")
# 开始录音
m.start();
# 睡眠3秒后 停止录音
time.sleep(3)
m.stop()
设备震动
设备震动一段时间,单位毫秒
- 函数
media.vibrate(time:int=200):
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
time | string | 必填 | 震动的时长,单位毫秒 默认:200毫秒 |
# 手机震动2秒
# 导包
from ascript.android import media
media.vibrate(2000)
图片文件存储相册并更新
将图片文件存储至相册中,并通知系统更新相册.
用于一些上传图片文件的场景.
- 函数
media.image_to_gallery(file_path:str):
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
file_path | string | 必填 | 图片文件的路径地址 |
# 将logo图片,存储至系统相册,并通知系统更新.
# 导包
from ascript.android import media
media.image_to_gallery(R.img("logo.png"))
发送邮件
# 导入 smtp邮件包
import smtplib
在这里我们使用 Python库 smtplib 实现邮件的发送
阿里云语音合成
TTS合成
初始化
初始化阿里云语音合成对象
- 函数
media.AliTts(app_key:str,
ak_id:str,
ak_secret:str,
font_name:str="siqi",
speed_level:str="1",
pitch_level:str="0",
volume:int=1
)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
app_key | dict | 必填 | 阿里云后台创建的appkey |
ak_id | dict | 必填 | 阿里云后台创建的AccessKey ID |
ak_secret | dict | 必填 | 阿里云后台创建的AccessKey Secret |
font_name | str | 否 | 发音人 ,音色列表,默认:siqi |
speed_level | str | 否 | 语速,取值范围:0~2,默认值:1.0,值越大语速越快。 |
pitch_level | string | 否 | 语调,取值范围:-500~500,默认值:0,值越大声音越尖锐。 |
volume | int | 否 | 音量默认1, 取值:1-100之间 |
# 初始化TTS 语音合成器
from ascript.android import media
app_key = "****"
ak_id = "****"
ak_secret = "******"
# 上面3个值,需要传入自己的阿里云后台数据.
tts = media.AliTts(app_key,ak_id,ak_secret)
# 初始化TTS 语音合成器, 语速2倍,音调300
from ascript.android import media
app_key = "****"
ak_id = "****"
ak_secret = "******"
# 上面3个值,需要传入自己的阿里云后台数据.
tts = media.AliTts(app_key,ak_id,ak_secret,speed_level="2.0",pitch_level="300")
合成语音
将文字转换为音频
media.AliTts(...).start(tts_msg:str,auto_play:bool=True,save_file=None)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
tts_msg | dict | 是 | 转音频的文字 |
ak_id | dict | 否 | 是否自动播放,默认自动播放 |
ak_secret | dict | 否 | 要存储语音的路径 |
- 示例
# 文字转语音
from ascript.android import media
app_key = "****"
ak_id = "****"
ak_secret = "****"
tts = media.AliTts(app_key,ak_id,ak_secret)
tts.start("遥遥领先AScript!")
CosyVoice合成
初始化
初始化阿里云语音合成对象
- 函数
media.AliTtsCosyVoice(self, app_key: str,
ak_id: str,
ak_secret: str,
voice: str = "longze",
enable_subtitle: bool = True,
format: str = "pcm",
sample_rate: int = 16000,
volume: int = 50,
speech_rate: int = 0,
pitch_rate: int = 0
):
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
app_key | dict | 必填 | 阿里云后台创建的appkey |
ak_id | dict | 必填 | 阿里云后台创建的AccessKey ID |
ak_secret | dict | 必填 | 阿里云后台创建的AccessKey Secret |
voice | str | 否 | 发音人 ,音色列表,默认longze |
sample_rate | str | 否 | 音频采样率,默认16000 |
volume | string | 否 | 朗读音量,范围是0~100,默认50。 |
speech_rate | int | 否 | 语速,范围是-500~500,默认是0。 |
pitch_rate | int | 否 | 语调,取值范围:-500~500,默认值:0,值越大声音越尖锐。 |
# 初始化TTS 语音合成器
from ascript.android import media
app_key = "****"
ak_id = "****"
ak_secret = "******"
# 上面3个值,需要传入自己的阿里云后台数据.
tts = media.AliTtsCosyVoice(app_key,ak_id,ak_secret)
# 初始化TTS 语音合成器, 语速200,音调300
from ascript.android import media
app_key = "****"
ak_id = "****"
ak_secret = "******"
# 上面3个值,需要传入自己的阿里云后台数据.
tts = media.AliTts(app_key,ak_id,ak_secret,speech_rate=100,pitch_rate="300")
合成并播放
将文字转换为音频
media.AliTtsCosyVoice(...).start(tts_msg:str,listener=None)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
tts_msg | dict | 是 | 转音频的文字 |
listener | dict | 否 | 回调函数,需要有一个形参, 回调0 为开始播放. 回调1播放结束 |
- 示例
# 文字转语音
from ascript.android import media
app_key = "***"
ak_id = "***"
ak_secret = "******"
res = media.AliTtsCosyVoice(app_key,ak_id,ak_secret,voice="longlaotie")
def listener(code):
if code==1:
print("播放结束")
res.start("哦~,宝贝儿",listener)