最近需要做一个类似于电话客户的功能,要求拨打电话能自动录音。所以写了一个dome,希望能够帮到大家。
主要思路:
监听手机通话状态
在监听到接听时开始录音,结束停止录音。
public abstract class CommonAdapter<T> extends BaseAdapter{
protected Context mContext;
protected List<T> mList;
protected int mLayoutId;
public CommonAdapter(Context context, List<T> list, int layoutId) {
mContext=context;
mList=list;
mLayoutId=layoutId;
}
//刷新数据
public void refresh(List<T> list){
mList=list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mList.size();
}
@Override
public T getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = ViewHolder.getHolder(mContext, mLayoutId, convertView, parent);
convertView(holder,mList.get(position));
return holder.getConvertView();
}
public abstract void convertView(ViewHolder holder,T t);
}
public class RBOutPhoneCallState {
Context ctx;
public RBOutPhoneCallState(Context ctx) {
this.ctx = ctx;
}
/**
* 前台呼叫状态
*
*/
public static final class ForeGroundCallState {
public static final String DIALING =
"com.sdvdxl.phonerecorder.FORE_GROUND_DIALING";
public static final String ALERTING =
"com.sdvdxl.phonerecorder.FORE_GROUND_ALERTING";
public static final String ACTIVE =
"com.sdvdxl.phonerecorder.FORE_GROUND_ACTIVE";
public static final String IDLE =
"com.sdvdxl.phonerecorder.FORE_GROUND_IDLE";
public static final String DISCONNECTED =
"com.sdvdxl.phonerecorder.FORE_GROUND_DISCONNECTED";
}
/**
* 开始监听呼出状态的转变,
* 并在对应状态发送广播
*/
public void startListen() {
new RBReadPhoneLog(ctx).start();
Log.d("Recorder", "开始监听呼出状态的转变,并在对应状态发送广播");
}
}
public class RBPhoneListener extends PhoneSta