封装原生模块,Android代码:
import android.media.AudioManager;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
/**
* @todo 音频控制模块.
* @auth CT(994599447@qq.com)
* @date 2017/4/11.
*/
public class AudioModule extends ReactContextBaseJavaModule {
private static final String REACT_CLASS = "AudioAndroid";
private ReactApplicationContext reactContext;
//音频管理器
private final AudioManager audioManager;
private int mVolume = 0;
private int mMaxVolume = 0;
public AudioModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
//获取音频管理器
audioManager = (AudioManager) reactContext.getSystemService(Context.AUDIO_SERVICE);
//获取最大音量
mMaxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
}
@Override
public String getName() {
return REACT_CLASS;
}
/**
* 设置音量
* @param volume
*/
@ReactMethod
public void setVolume(int volume) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
}
/**
* 获取最大音量
* @param callback 回调方法
*/
@ReactMethod
public void getMaxVolume(Callback callback) {
callback.invoke(mMaxVolume);
}
/**
* 获取当前音量
* @param callback 回调方法
*/
@ReactMethod
public void getVolume(Callback callback) {
callback.invoke( audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
}
}
JS端,AudioAndroid.js:
/**
* @todo 音频管理.
* @auth CT(994599447@qq.com)
* @date 2017/4/11
*/
'use strict';
import React from 'react';
import { NativeModules } from 'react-native';
var AudioAndroid = NativeModules.AudioAndroid;
export default {
//获取当前音量
getVolume(cb) {
AudioAndroid.getVolume((volume) =>{
cb(volume);
});
},
//获取最大音量
getMaxVolume(cb) {
AudioAndroid.getMaxVolume((maxVolume) =>{
cb(maxVolume);
});
},
//设置当前音量
setVolume(volume) {
AudioAndroid.setVolume(volume);
},
};
使用:
1、import AudioAndroid from './AudioAndroid'
2、
//获取设备最大媒体音量
AudioAndroid.getMaxVolume((maxVolume)=>{
this.setState({
maxVolume:maxVolume,
});
});
//获取设备当前媒体音量
AudioAndroid.getVolume((volume)=>{
this.setState({
volume:volume,
});
});
//设置媒体音量
AudioAndroid.setVolume(volume);
网友评论