美文网首页
React Native Android 音量设置

React Native Android 音量设置

作者: 在路上的CT | 来源:发表于2017-04-11 13:09 被阅读408次

封装原生模块,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);

相关文章

网友评论

      本文标题:React Native Android 音量设置

      本文链接:https://www.haomeiwen.com/subject/xwiyattx.html