Skip to main content

多媒体

# 包
from ascript.android import media

音视频播放,录制,邮件发送 等操作

方法

音量调节

调节音量大小(1-100)

  • 函数
media.volume(percent:int,type:int =3)
  • 参数
参数类型必须备注
percentint音量大小 1-100之间
typeint音量类型,默认为3,见下表

什么是音量类型?

在Android 系统中,包含了很多音量类型,如 音乐,系统通知,闹钟,电话等等.不同的类型,都有自己的音量

该参数来自 android.media.AudioManager

音量类型备注
音乐回放即媒体音量3
窗口顶部状态栏Notification5
警告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)
  • 参数
参数类型必须备注
typeint音量类型,默认为3,见下表

什么是音量类型?

在Android 系统中,包含了很多音量类型,如 音乐,系统通知,闹钟,电话等等.不同的类型,都有自己的音量

该参数来自 android.media.AudioManager

音量类型备注
音乐回放即媒体音量3
窗口顶部状态栏Notification5
警告4
铃声2
系统1
通话0
  • 示例
# 获取媒体音量百分比
# 导包
from ascript.android import media
num = media.get_volume(3)
print(num) # 返回 0-100 的百分比

获取最大音量

获取指定类型的最大音量原始值

  • 函数
media.get_max_volume(type:int =3)
  • 参数
参数类型必须备注
typeint音量类型,默认为3(媒体音量)
  • 示例
from ascript.android import media
max_vol = media.get_max_volume()
print("最大音量:", max_vol)

亮度设置

设置屏幕亮度(0-100),会自动切换为手动亮度模式.

需要权限

需要 "修改系统设置" 权限. 可在系统设置中为AScript开启.

  • 函数
media.brightness(percent:int)
参数类型必须备注
percentint亮度百分比 0-100
  • 示例
# 设置屏幕亮度为50%
from ascript.android import media
media.brightness(50)

亮度获取

获取当前屏幕亮度百分比

  • 函数
media.get_brightness()
  • 返回值

int, 亮度百分比 0-100

  • 示例
from ascript.android import media
b = media.get_brightness()
print("当前亮度:", b, "%")

取消震动

立即停止当前的设备震动

  • 函数
media.cancel_vibrate()
  • 示例
from ascript.android import media
# 开始震动5秒
media.vibrate(5000)

import time
time.sleep(1)

# 1秒后立刻停止
media.cancel_vibrate()

语音朗读

将文本用语音朗读出来

  • 函数
media.talk(msg:str)
部分设备不支持

部分设备缺少语音库,因此不支持,如(雷电模拟器)

  • 参数
参数类型必须备注
msgstring要朗读的文本
  • 示例
# 文本转语音朗读出来
#导包
from ascript.android import media
media.talk('自在老师你好')

播放音频

播放音频文件

  • 函数
media.play(path:str,callback=None)
  • 参数
参数类型必须备注
pathstring必填要播放的音频文件
callbackclass可选一个回调对象
回调对象格式见案例
  • 示例
# 播放一个音频文件
# 导包
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):
  • 参数
参数类型必须备注
pathstring必填录制音频的文件放置路径,如果文件不存在,会自动创建
timeint可选录制音频的时长,如果不填写.则直到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):
参数类型必须备注
timeint必填震动的时长,单位毫秒 默认:200毫秒
# 手机震动2秒
# 导包
from ascript.android import media
media.vibrate(2000)

图片文件存储相册并更新

将图片文件存储至相册中,并通知系统更新相册.

用于一些上传图片文件的场景.

  • 函数
media.image_to_gallery(file_path:str):
参数类型必须备注
file_pathstring必填图片文件的路径地址
# 将logo图片,存储至系统相册,并通知系统更新.
# 导包
from ascript.android import media
media.image_to_gallery(R.img("logo.png"))

发送邮件

调用系统邮件客户端发送邮件

  • 函数
media.send_email(to:str=None, subject:str=None, body:str=None)
参数类型必须备注
tostr收件人邮箱地址
subjectstr邮件主题
bodystr邮件正文
  • 示例
# 调用系统邮件客户端发送邮件
from ascript.android import media
media.send_email("test@example.com", "测试邮件", "这是一封来自AScript的邮件")
使用 smtplib 直接发送

如果需要后台静默发送邮件(不弹出邮件客户端),可以使用 Python 的 smtplib 库:

import smtplib

阿里语音合成

该部分已迁移至插件中. 详细请见ali-media插件