
不会编程的程序猪 - 云代码空间
——
package dahuatech.netsdk.activity;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import com.example.androiddemo.R;
import dahuatech.netsdk.common.DialogProgress;
import dahuatech.netsdk.common.PrefsConstants;
import dahuatech.netsdk.module.IPLoginModule;
import dahuatech.netsdk.common.ToolKits;
public class IPLoginActivity extends Activity {
private EditText mEditTextAddress;
private EditText mEditTextPort;
private EditText mEditTextUsername;
private EditText mEditTextPassword;
private CheckBox mCheckBox;
private SharedPreferences mSharedPrefs;
private IPLoginModule mLoginModule;
private NetSDKApplication app;
private DialogProgress mDialogProgress;
private Resources res;
private String mAddress;
private String mPort;
private String mUsername;
private String mPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_iplogin);
setTitle(R.string.activity_main_ip_domin);
/// get global data得到全局数据
app = (NetSDKApplication)getApplication();//调用NETSDKapplication
res = getResources();
mDialogProgress = new DialogProgress(this);
mLoginModule = new IPLoginModule();
setupView(); //初始化视频页面
}
@Override
protected void onDestroy() {
if(null != mLoginModule) {
mLoginModule.logout();
mLoginModule = null;
}
super.onDestroy();
}
@Override
protected void onResume() {
// 在onResume时,我们应该注销该设备。
mLoginModule.logout();
super.onResume();
}
private void setupView() {
mEditTextAddress = (EditText)findViewById(R.id.editTextServerIp);
mEditTextPort = (EditText)findViewById(R.id.editTextServerPort);
mEditTextUsername = (EditText)findViewById(R.id.editTextUsername);
mEditTextPassword = (EditText)findViewById(R.id.et_pwd);
Button ButtonLogin = (Button)findViewById(R.id.buttonLogin);
ButtonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkLoginEditText()) {
LoginTask loginTask = new LoginTask();
loginTask.execute();//登录执行
}
}
});
mCheckBox = (CheckBox)findViewById(R.id.checkBox);
getSharePrefs();
}
// LoginTask 登录任务
private class LoginTask extends AsyncTask<String, Integer, Boolean> {
@Override
protected void onPreExecute(){
super.onPreExecute();
mDialogProgress.setMessage(res.getString(R.string.logining));
mDialogProgress.setSpinnerType(DialogProgress.FADED_ROUND_SPINNER);
mDialogProgress.setCancelable(false);
mDialogProgress.show();
Log.d("debugtest", "这里是弹窗------"+mAddress);
}
@Override
protected Boolean doInBackground(String... params) {
// return mLoginModule.login("192.168.16.108", "37777", "admin", "admin");
return mLoginModule.login(mAddress, mPort, mUsername, mPassword);
}
@Override
protected void onPostExecute(Boolean result){
mDialogProgress.dismiss();
if (result) {
putSharePrefs();
app.setLoginHandle(mLoginModule.getLoginHandle());
app.setDeviceInfo(mLoginModule.getDeviceInfo());
startActivity(new Intent(IPLoginActivity.this, LivePreviewActivity.class));
Log.d("debugtest", "这是登录跳转------"+result);
} else {
ToolKits.showMessage(IPLoginActivity.this, getErrorCode(getResources(), mLoginModule.errorCode()));
Log.d("debugtest", "这是登录不能跳转------"+result);
}
}
}
private void putSharePrefs() {
SharedPreferences.Editor editor = mSharedPrefs.edit();
if (mCheckBox.isChecked()) {
editor.putString(PrefsConstants.LOGIN_IP, mAddress);
editor.putString(PrefsConstants.LOGIN_PORT, mPort);
editor.putString(PrefsConstants.LOGIN_USERNAME, mUsername);
editor.putString(PrefsConstants.LOGIN_PASSWORD, mPassword);
editor.putBoolean(PrefsConstants.LOGIN_CHECK, true);
}
editor.apply();
}
private void getSharePrefs() {
mSharedPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = mSharedPrefs.edit();
mEditTextAddress.setText(mSharedPrefs.getString(PrefsConstants.LOGIN_IP, "171.35.13.64"));
mEditTextPort.setText(mSharedPrefs.getString(PrefsConstants.LOGIN_PORT, "37777"));
mEditTextUsername.setText(mSharedPrefs.getString(PrefsConstants.LOGIN_USERNAME, "admin"));
mEditTextPassword.setText(mSharedPrefs.getString(PrefsConstants.LOGIN_PASSWORD, "admin"));
mCheckBox.setChecked(mSharedPrefs.getBoolean(PrefsConstants.LOGIN_CHECK, false));
editor.apply();
}
private boolean checkLoginEditText() {
mAddress = mEditTextAddress.getText().toString();
mPort = mEditTextPort.getText().toString();
mUsername = mEditTextUsername.getText().toString();
mPassword = mEditTextPassword.getText().toString();
if(mAddress.length() == 0) {
ToolKits.showMessage(IPLoginActivity.this, res.getString(R.string.activity_iplogin_ip_empty));
return false;
}
if(mPort.length() == 0) {
ToolKits.showMessage(IPLoginActivity.this, res.getString(R.string.activity_iplogin_port_empty));
return false;
}
if(mUsername.length() == 0) {
ToolKits.showMessage(IPLoginActivity.this, res.getString(R.string.activity_iplogin_username_empty));
return false;
}
if(mPassword.length() == 0) {
ToolKits.showMessage(IPLoginActivity.this, res.getString(R.string.activity_iplogin_password_empty));
return false;
}
try {
Integer.parseInt(mPort);
} catch (Exception e) {
e.printStackTrace();
ToolKits.showMessage(IPLoginActivity.this, res.getString(R.string.activity_iplogin_port_err));
return false;
}
return true;
}
public static String getErrorCode(Resources res, int errorCode) {
switch(errorCode) {
case IPLoginModule.NET_USER_FLASEPWD_TRYTIME:
return res.getString(R.string.NET_USER_FLASEPWD_TRYTIME);
case IPLoginModule.NET_LOGIN_ERROR_PASSWORD:
return res.getString(R.string.NET_LOGIN_ERROR_PASSWORD);
case IPLoginModule.NET_LOGIN_ERROR_USER:
return res.getString(R.string.NET_LOGIN_ERROR_USER);
case IPLoginModule.NET_LOGIN_ERROR_TIMEOUT:
return res.getString(R.string.NET_LOGIN_ERROR_TIMEOUT);
case IPLoginModule.NET_LOGIN_ERROR_RELOGGIN:
return res.getString(R.string.NET_LOGIN_ERROR_RELOGGIN);
case IPLoginModule.NET_LOGIN_ERROR_LOCKED:
return res.getString(R.string.NET_LOGIN_ERROR_LOCKED);
case IPLoginModule.NET_LOGIN_ERROR_BLACKLIST:
return res.getString(R.string.NET_LOGIN_ERROR_BLACKLIST);
case IPLoginModule.NET_LOGIN_ERROR_BUSY:
return res.getString(R.string.NET_LOGIN_ERROR_BUSY);
case IPLoginModule.NET_LOGIN_ERROR_CONNECT:
return res.getString(R.string.NET_LOGIN_ERROR_CONNECT);
case IPLoginModule.NET_LOGIN_ERROR_NETWORK:
return res.getString(R.string.NET_LOGIN_ERROR_NETWORK);
default:
return res.getString(R.string.NET_ERROR);
}
}
}
package dahuatech.netsdk.activity;
import android.content.Context;
import android.content.DialogInterface;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.text.method.DigitsKeyListener;
import android.text.method.KeyListener;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.company.NetSDK.SDK_EXTPTZ_ControlType;
import com.company.NetSDK.SDK_PTZ_ControlType;
import com.example.androiddemo.R;
import dahuatech.netsdk.common.DialogProgress;
import dahuatech.netsdk.common.ToolKits;
import dahuatech.netsdk.module.LivePreviewModule;
import java.util.ArrayList;
public class LivePreviewActivity extends Activity implements
SurfaceHolder.Callback,
AdapterView.OnItemSelectedListener,
View.OnClickListener{
private final String TAG = LivePreviewActivity.class.getSimpleName();
Spinner mSelectStream;
Spinner mSelectChannel;
Spinner mEncodeMode;
Spinner mEncodeResolve;
Spinner mEncodeFps;
Spinner mEncodeBitRate;
SurfaceView mRealView;
EditText mEditText;
View mPtzControlLayoutView;
LivePreviewModule mLiveModule;
AlertDialog.Builder builder;
private boolean isRecord = false;
private int count = 0;
///touch time.
///触摸时间.
long mTouchStartTime = 0;
long mTouchMoveTime = 0;
///single touch.
///单点触摸.
float mSingleTouchStart_x = 0;
float mSingleTouchStart_y = 0;
float mSingleTouchEnd_x = 0;
float mSingleTouchEnd_y = 0;
///double touch.
///两点触摸.
float mDoubleTouchStart_x1 = 0;
float mDoubleTouchStart_y1 = 0;
float mDoubleTouchStart_x2 = 0;
float mDoubleTouchStart_y2 = 0;
float mDoubleTouchEnd_x1 = 0;
float mDoubleTouchEnd_y1 = 0;
float mDoubleTouchEnd_x2 = 0;
float mDoubleTouchEnd_y2 = 0;
Button mEncodeBtn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_live_preview);
mLiveModule = new LivePreviewModule(this);
setTitle(R.string.activity_function_list_live_preview);
builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.ptz_control_fragment_info);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
setupView();
}
private void setupView(){
mSelectStream = (Spinner)findViewById(R.id.select_stream_type);
mSelectChannel = (Spinner)findViewById(R.id.select_channel);
mRealView = (SurfaceView)findViewById(R.id.real_view);
mRealView.getHolder().addCallback(this);
initializeSpinner(mSelectChannel,(ArrayList)mLiveModule.getChannelList()).setSelection(0);
initializeSpinner(mSelectStream,(ArrayList)mLiveModule.getStreamTypeList(mSelectChannel.getSelectedItemPosition())).setSelection(1);
((Button)findViewById(R.id.preview_ptz_control)).setOnClickListener(this);
mPtzControlLayoutView = (View)findViewById(R.id.ptz_control);
mEditText = (EditText)mPtzControlLayoutView.findViewById(R.id.edittext_preset);
///Only limit to use number
///只允许输入数字
KeyListener keyListener = new DigitsKeyListener(false, false);
mEditText.setKeyListener(keyListener);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_focus_add)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_focus_dec)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_aperture_add)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_aperture_dec)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_setpreset)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_clearpreset)).setOnClickListener(this);
((Button) mPtzControlLayoutView.findViewById(R.id.preview_gotopreset)).setOnClickListener(this);
((Button)findViewById(R.id.preview_remote_snapPic)).setOnClickListener(this);
mEncodeBtn = ((Button)findViewById(R.id.preview_encode));
mEncodeBtn.setOnClickListener(this);
((Button)findViewById(R.id.preview_record)).setOnClickListener(this);
}
@Override
protected void onResume(){
super.onResume();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mLiveModule.initSurfaceView(mRealView);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
protected void onDestroy(){
mLiveModule.stopRealPlay();
mLiveModule = null;
mRealView = null;
super.onDestroy();
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int parentID = parent.getId();
boolean isMain = isMainStream();
///Close the listener event when not triggered.
///未触发时关闭侦听器事件。
if((count == 0)&&(position == 0)) {
count ++;
return;
}
switch (parentID){
case R.id.select_channel:
onChannelChanged(position);
break;
case R.id.select_stream_type:
onStreamTypeChanged(position);
break;
case R.id.compress_fromat_spinner:
onUpdateMode(((TextView)view).getText().toString(),isMain);
break;
case R.id.resolve_spinner:
onUpdateResolve(((TextView)view).getText().toString(),isMain);
break;
case R.id.frame_rate_spinner:
onUpdateFps(position,isMain);
break;
case R.id.bit_rate_spinner:
onUpdateBitRate(((TextView)view).getText().toString(),isMain);
break;
default:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private void onChannelChanged(int pos){
if (mLiveModule == null)
return;
mLiveModule.stopRealPlay();
mLiveModule.startPlay(pos,mSelectStream.getSelectedItemPosition(),mRealView);
}
private void onStreamTypeChanged(int position){
if (mLiveModule == null)
return;
mLiveModule.stopRealPlay();
mLiveModule.startPlay(mSelectChannel.getSelectedItemPosition(),position,mRealView);
}
@Override
public void onClick(View v) {
String text = mEditText.getText().toString();
switch (v.getId()){
case R.id.preview_ptz_control:
if(mPtzControlLayoutView.isShown()) {
mPtzControlLayoutView.setVisibility(View.GONE);
} else {
mPtzControlLayoutView.setVisibility(View.VISIBLE);
}
break;
case R.id.preview_remote_snapPic:
if(mPtzControlLayoutView.isShown()) {
mPtzControlLayoutView.setVisibility(View.GONE);
}
mLiveModule.snap(mSelectChannel.getSelectedItemPosition());
break;
case R.id.preview_encode:
if(mPtzControlLayoutView.isShown()) {
mPtzControlLayoutView.setVisibility(View.GONE);
}
mEncodeBtn.setEnabled(false);
onEncode();
break;
case R.id.preview_record:
if(mPtzControlLayoutView.isShown()) {
mPtzControlLayoutView.setVisibility(View.GONE);
}
isRecord = !isRecord;
onRecord(v, isRecord);
break;
case R.id.preview_focus_add:
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_FOCUS_ADD_CONTROL,(byte)8);
break;
case R.id.preview_focus_dec:
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_FOCUS_DEC_CONTROL,(byte)8);
break;
case R.id.preview_aperture_add:
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_APERTURE_ADD_CONTROL, (byte)8);
break;
case R.id.preview_aperture_dec:
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_APERTURE_DEC_CONTROL, (byte)8);
break;
case R.id.preview_setpreset:
if(!text.equals("")) {
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_POINT_SET_CONTROL,
(byte)Integer.parseInt(text)) ;
}else {
ToolKits.showMessage(LivePreviewActivity.this, getString(R.string.input_number));
}
break;
case R.id.preview_clearpreset:
if(!text.equals("")) {
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_POINT_DEL_CONTROL,
(byte)Integer.parseInt(text));
}else {
ToolKits.showMessage(LivePreviewActivity.this, getString(R.string.input_number));
}
break;
case R.id.preview_gotopreset:
if(!text.equals("")) {
mLiveModule.ptzControlEx(mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_POINT_MOVE_CONTROL,
(byte)Integer.parseInt(text));
} else {
ToolKits.showMessage(LivePreviewActivity.this, getString(R.string.input_number));
}
break;
default:
break;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
final int mAction = event.getAction();
int mPointorCount = event.getPointerCount();
switch(mAction) {
case MotionEvent.ACTION_DOWN :
if(mPtzControlLayoutView.isShown()) {
mPtzControlLayoutView.setVisibility(View.GONE);
}
///If the input method has already been shown on the window, it is hidden.
///如果输入方法已经显示在窗口中,那么它将被隐藏。
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(mRealView.getWindowToken(), 0);
mTouchStartTime = System.currentTimeMillis();
mSingleTouchStart_x = event.getX();
mSingleTouchStart_y = event.getY();
break;
case MotionEvent.ACTION_MOVE :
mTouchMoveTime = System.currentTimeMillis() - mTouchStartTime;
int mHistorySize = event.getHistorySize();
if(mHistorySize == 0) {
return true;
}
if((mPointorCount == 1) && (mTouchMoveTime > 300)){
mSingleTouchEnd_x = event.getX();
mSingleTouchEnd_y = event.getY();
float mSingleTouchValue_x = mSingleTouchEnd_x - mSingleTouchStart_x;
float mSingleTouchValue_y = mSingleTouchEnd_y - mSingleTouchStart_y;
float mDeviation = Math.abs(mSingleTouchValue_y/mSingleTouchValue_x);
if((mSingleTouchValue_x > 0) && (mDeviation < 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_RIGHT_CONTROL, (byte)0, (byte)8);
} else if((mSingleTouchValue_x < 0) && (mDeviation < 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_LEFT_CONTROL, (byte)0, (byte)8);
} else if((mSingleTouchValue_y > 0) && (mDeviation > 11.43)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_DOWN_CONTROL, (byte)0, (byte)8);
} else if((mSingleTouchValue_y < 0) && (mDeviation > 11.43)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_UP_CONTROL, (byte)0, (byte)8);
} else if((mSingleTouchValue_x < 0) && (mSingleTouchValue_y < 0) && (mDeviation <= 11.43) && (mDeviation >= 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_EXTPTZ_ControlType.SDK_EXTPTZ_LEFTTOP, (byte)8, (byte)8);
} else if((mSingleTouchValue_x < 0) && (mSingleTouchValue_y > 0) && (mDeviation <= 11.43) && (mDeviation >= 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_EXTPTZ_ControlType.SDK_EXTPTZ_LEFTDOWN, (byte)8, (byte)8);
} else if((mSingleTouchValue_x > 0) && (mSingleTouchValue_y < 0) && (mDeviation <= 11.43) && (mDeviation >= 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_EXTPTZ_ControlType.SDK_EXTPTZ_RIGHTTOP, (byte)8, (byte)8);
} else if((mSingleTouchValue_x > 0) && (mSingleTouchValue_y > 0) && (mDeviation <= 11.43) && (mDeviation >= 0.87)) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_EXTPTZ_ControlType.SDK_EXTPTZ_RIGHTDOWN, (byte)8, (byte)8);
}
} else if((mPointorCount == 2) && (mTouchMoveTime > 300)){
mDoubleTouchStart_x1 = event.getHistoricalX(0, mHistorySize - 1);
mDoubleTouchStart_y1 = event.getHistoricalY(0, mHistorySize - 1);
mDoubleTouchStart_x2 = event.getHistoricalX(1, mHistorySize - 1);
mDoubleTouchStart_y2 = event.getHistoricalY(1, mHistorySize - 1);
mDoubleTouchEnd_x1 = event.getX(0);
mDoubleTouchEnd_y1 = event.getY(0);
mDoubleTouchEnd_x2 = event.getX(1);
mDoubleTouchEnd_y2 = event.getY(1);
float mStartDistance_x = mDoubleTouchStart_x2 - mDoubleTouchStart_x1;
float mStartDistance_y = mDoubleTouchStart_y2 - mDoubleTouchStart_y1;
float mEndDistance_x = mDoubleTouchEnd_x2 - mDoubleTouchEnd_x1;
float mEndDistance_y = mDoubleTouchEnd_y2 - mDoubleTouchEnd_y1;
float mStartTouchDistance = (float)Math.sqrt(mStartDistance_x * mStartDistance_x + mStartDistance_y * mStartDistance_y);
float mEndTouchDistance = (float)Math.sqrt(mEndDistance_x * mEndDistance_x + mEndDistance_y * mEndDistance_y);
if(mEndTouchDistance > mStartTouchDistance) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_ZOOM_ADD_CONTROL, (byte)0, (byte)8);
} else if(mEndTouchDistance < mStartTouchDistance) {
return mLiveModule.ptzControl(event, mSelectChannel.getSelectedItemPosition(), SDK_PTZ_ControlType.SDK_PTZ_ZOOM_DEC_CONTROL, (byte)0, (byte)8);
} else {
return false;
}
}
break;
case MotionEvent.ACTION_UP :
break;
default :
break;
}
return false;
}
private void onEncode(){
final Dialog dialog = new Dialog(this);
LayoutInflater inflater = LayoutInflater.from(this);
dialog.setContentView(inflater.inflate(R.layout.encode_config_dialog,null));
mEncodeMode = ((Spinner)dialog.findViewById(R.id.compress_fromat_spinner));
mEncodeResolve =((Spinner)dialog.findViewById(R.id.resolve_spinner)) ;
mEncodeFps = ((Spinner)dialog.findViewById(R.id.frame_rate_spinner));
mEncodeBitRate = ((Spinner)dialog.findViewById(R.id.bit_rate_spinner));
mLiveModule.setSpinnerDataCallBack(new LivePreviewModule.SpinnerDataCallback() {
@Override
public void onSetSpinner(Bundle data, DialogProgress dhdialog) {
if (data == null)
return;
initializeSpinner(mEncodeMode,data.getStringArrayList(mLiveModule.MODE)).
setSelection(data.getInt(mLiveModule.MODE_POS),true);
initializeSpinner(mEncodeResolve,data.getStringArrayList(mLiveModule.RESOLUTION))
.setSelection(data.getInt(mLiveModule.RESOLUTION_POS),true);
initializeSpinner(mEncodeFps,data.getStringArrayList(mLiveModule.FPS)).
setSelection(data.getInt(mLiveModule.FPS_POS),true);
initializeSpinner(mEncodeBitRate,data.getStringArrayList(mLiveModule.BITRATE)).
setSelection(data.getInt(mLiveModule.BITRATE_POS),true);
dialog.show();
if (dhdialog != null && dhdialog.isShowing())
dhdialog.dismiss();
}
});
// 得到编码设备
mLiveModule.getEncodeData(mSelectChannel.getSelectedItemPosition(), isMainStream());
((Button)dialog.findViewById(R.id.encode_setting_config_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
if(mLiveModule.setEncodeConfig(mSelectChannel.getSelectedItemPosition())){
ToolKits.showMessage(LivePreviewActivity.this,getString(R.string.encode_set_success));
}else {
ToolKits.showMessage(LivePreviewActivity.this,getString(R.string.encode_set_failed));
}
}
});
dialog.setCanceledOnTouchOutside(true);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mEncodeBtn.setEnabled(true);
}
});
}
private void onUpdateMode(String text,boolean isMainStream){
mLiveModule.updateMode(mSelectChannel.getSelectedItemPosition(),text,isMainStream);
((ArrayAdapter)mEncodeResolve.getAdapter()).notifyDataSetChanged();
((ArrayAdapter)mEncodeFps.getAdapter()).notifyDataSetChanged();
((ArrayAdapter)mEncodeBitRate.getAdapter()).notifyDataSetChanged();
}
private void onUpdateResolve(String text,boolean isMainStream){
mLiveModule.updateResolve(mSelectChannel.getSelectedItemPosition(),text,isMainStream);
((ArrayAdapter)mEncodeFps.getAdapter()).notifyDataSetChanged();
((ArrayAdapter)mEncodeBitRate.getAdapter()).notifyDataSetChanged();
}
private void onUpdateFps(int pos,boolean isMainStream){
mLiveModule.updateFps(mSelectChannel.getSelectedItemPosition(),pos,isMainStream);
((ArrayAdapter)mEncodeBitRate.getAdapter()).notifyDataSetChanged();
}
private void onUpdateBitRate(String value,boolean isMainStream){
mLiveModule.updateBitRate(value,isMainStream);
}
private Spinner initializeSpinner(final Spinner spinner, ArrayList array){
spinner.setSelection(0,true);
spinner.setOnItemSelectedListener(this);
spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,array));
return spinner;
}
private void onRecord(View v, boolean recordFlag){
if( mLiveModule.record(recordFlag)){
if(recordFlag){
((Button)v).setText(R.string.stop_record);
}else {
((Button)v).setText(R.string.start_record);
}
}
}
private boolean isMainStream(){
return mSelectStream.getSelectedItemPosition() == 0 ? true : false;
}
}