com.lib.imrecordbutton.IMRecordButton

Here are the examples of the java api com.lib.imrecordbutton.IMRecordButton taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1 Examples 7

16 Source : HxChatController.java
with Apache License 2.0
from Vanish136

/**
 * Created by LWK
 * TODO 聊天输入控制器
 * 2016/9/26
 */
public clreplaced HxChatController extends LinearLayout {

    // 文字输入模式标识
    public static final int INPUT_MODE_TEXT = 1;

    // 语音输入模式标识
    public static final int INPUT_MODE_VOICE = 2;

    // 当前输入模式
    private int mCurInputMode = -1;

    // 输入模式切换器开关
    private ImageView mImgInputModeSwitch;

    // 文字输入EditText
    private EditText mEdTextInput;

    // 语音输入IMRecordButton
    private IMRecordButton mIMRecordButton;

    // 发送按钮
    private Button mBtnSend;

    // 发送监听
    private onTextSendListener mSendListener;

    // 切换到语音输入模式的监听
    private onCheckModeToVoiceInputListener mVoiceInputModeListener;

    public HxChatController(Context context) {
        super(context);
        init(context, null, 0);
    }

    public HxChatController(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public HxChatController(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs, defStyleAttr);
    }

    private void init(Context context, AttributeSet attrs, int defStyleAttr) {
        inflate(context, R.layout.layout_chat_controller, this);
        mImgInputModeSwitch = (ImageView) findViewById(R.id.img_chat_controller_input_mode);
        mEdTextInput = (EditText) findViewById(R.id.ed_chat_controller_text_input);
        mIMRecordButton = (IMRecordButton) findViewById(R.id.imbtn_chat_controller_voice_input);
        mIMRecordButton.setCachePath(FCCache.getInstance().getVoiceCachePath());
        mBtnSend = (Button) findViewById(R.id.btn_chat_controller_send);
        mImgInputModeSwitch.setOnClickListener(mInputModeSwitchListener);
        mBtnSend.setOnClickListener(mBtnSendClickListener);
        // 初始化输入模式
        switchInputMode(false);
    }

    // 切换输入模式
    private void switchInputMode(boolean requestFocus) {
        mEdTextInput.clearFocus();
        if (mCurInputMode == INPUT_MODE_TEXT) {
            // 切换到语音输入模式下要检查当前系统版本是不是在6.0以上
            // 是的话要让Activity去申请权限,申请成功后由Activity那边调用切换模式的方法
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (mVoiceInputModeListener != null)
                    mVoiceInputModeListener.onCheckToVoiceInputMode();
            } else {
                checkModeToVoiceInput();
            }
        } else {
            checkModeToTextInput(requestFocus);
        }
    }

    // 切换为语音输入模式
    public void checkModeToVoiceInput() {
        mImgInputModeSwitch.setImageResource(R.drawable.img_chat_contorller_voice_selector);
        mEdTextInput.setVisibility(GONE);
        mBtnSend.setVisibility(GONE);
        KeyboradUtils.HideKeyboard(mEdTextInput);
        mIMRecordButton.setVisibility(VISIBLE);
        mCurInputMode = INPUT_MODE_VOICE;
    }

    // 切换为文字输入模式
    public void checkModeToTextInput(boolean requestFocus) {
        mImgInputModeSwitch.setImageResource(R.drawable.img_chat_contorller_text_selector);
        mEdTextInput.setVisibility(VISIBLE);
        mBtnSend.setVisibility(VISIBLE);
        mIMRecordButton.setVisibility(GONE);
        if (requestFocus) {
            mEdTextInput.requestFocus();
            KeyboradUtils.ShowKeyboard(mEdTextInput);
        }
        mCurInputMode = INPUT_MODE_TEXT;
    }

    // 发送按钮监听
    private OnClickListener mBtnSendClickListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            String content = mEdTextInput.getText().toString();
            if (StringUtil.isEmpty(content))
                return;
            if (mSendListener != null)
                mSendListener.onClickSend(content);
            mEdTextInput.setText(null);
        }
    };

    /**
     * 获取当前InputMode
     */
    public int getCurInputMode() {
        return mCurInputMode;
    }

    // 输入模式切换监听
    private OnClickListener mInputModeSwitchListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            switchInputMode(true);
        }
    };

    /**
     * 设置录音监听
     */
    public void setOnRecordListener(IMRecordListener listener) {
        if (mIMRecordButton != null)
            mIMRecordButton.setOnRecordListener(listener);
    }

    /**
     * 设置文本消息发送监听
     */
    public void setOnTextSendListener(onTextSendListener listener) {
        this.mSendListener = listener;
    }

    public interface onTextSendListener {

        void onClickSend(String content);
    }

    /**
     * 设置切换到语音输入模式的监听
     * [麻痹!要让Activity申请6.0的权限]
     */
    public void setOnCheckModeToVoiceInputListener(onCheckModeToVoiceInputListener listener) {
        this.mVoiceInputModeListener = listener;
    }

    public interface onCheckModeToVoiceInputListener {

        void onCheckToVoiceInputMode();
    }
}