use of org.esaydarwin.rtsp.player.databinding.VideoSourceItemBinding in project EasyPlayer-RTMP-Android by EasyDSS.
the class PlaylistActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.content_playlist);
// setContentView(R.layout.content_playlist);
setSupportActionBar(mBinding.toolbar);
mCursor = TheApp.sDB.query(VideoSource.TABLE_NAME, null, null, null, null, null, null);
if (!mCursor.moveToFirst()) {
ContentValues cv = new ContentValues();
cv.put(VideoSource.URL, "rtmp://live.hkstv.hk.lxdns.com/live/hks");
TheApp.sDB.insert(VideoSource.TABLE_NAME, null, cv);
mCursor.close();
mCursor = TheApp.sDB.query(VideoSource.TABLE_NAME, null, null, null, null, null, null);
}
mRecyclerView = mBinding.recycler;
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(new RecyclerView.Adapter() {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new PlayListViewHolder((VideoSourceItemBinding) DataBindingUtil.inflate(getLayoutInflater(), R.layout.video_source_item, parent, false));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
PlayListViewHolder plvh = (PlayListViewHolder) holder;
mCursor.moveToPosition(position);
String name = mCursor.getString(mCursor.getColumnIndex(VideoSource.NAME));
String url = mCursor.getString(mCursor.getColumnIndex(VideoSource.URL));
if (!TextUtils.isEmpty(name)) {
plvh.mTextView.setText(name);
} else {
plvh.mTextView.setText(url);
}
File file = url2localPosterFile(PlaylistActivity.this, url);
Glide.with(PlaylistActivity.this).load(file).signature(new StringSignature(UUID.randomUUID().toString())).placeholder(R.drawable.placeholder).centerCrop().into(plvh.mImageView);
int audienceNumber = mCursor.getInt(mCursor.getColumnIndex(VideoSource.AUDIENCE_NUMBER));
if (audienceNumber > 0) {
plvh.mAudienceNumber.setText(String.format("当前观看人数:%d", audienceNumber));
plvh.mAudienceNumber.setVisibility(View.VISIBLE);
} else {
plvh.mAudienceNumber.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return mCursor.getCount();
}
});
if (savedInstanceState == null) {
startActivity(new Intent(this, SplashActivity.class));
}
if (!isPro()) {
mBinding.pullToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
doLoadData(true);
}
});
doLoadData(false);
mBinding.toolbarSetting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(PlaylistActivity.this, SettingsActivity.class));
}
});
} else {
mBinding.toolbarSetting.setVisibility(View.GONE);
mBinding.pullToRefresh.setEnabled(false);
}
mBinding.toolbarAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText edit = new EditText(PlaylistActivity.this);
edit.setHint(isPro() ? "RTSP/RTMP/HTTP/HLS地址" : "RTMP地址(格式为RTMP://...)");
final int hori = (int) getResources().getDimension(R.dimen.activity_horizontal_margin);
final int verti = (int) getResources().getDimension(R.dimen.activity_vertical_margin);
edit.setPadding(hori, verti, hori, verti);
// edit.setFilters(new InputFilter[]{new InputFilter() {
// @Override
// public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// if (end-start == 0){
// return null;
// }
// Log.d(TAG, String.format("source:%s,start:%d,end:%d;dest:%s,dstart:%d,dend:%d", source, start,end, dest, dstart,dend));
// char[] chs = new char[dest.length()-(dend - dstart) + end-start];
// int i =0;
// int idx = 0;
// for (;i<dstart;i++){
// chs[idx++] = dest.charAt(i);
// }
//
// for (i = start;i<end;i++){
// chs[idx++] = source.charAt(i);
// }
// for (i=dend;i<dest.length();i++){
// chs[idx++] = dest.charAt(i);
// }
//
// String dst = new String(chs);
// dst = dst.toLowerCase();
// if ("rtsp://".indexOf(dst) == 0){
// return null;
// }else if (dst.indexOf("rtsp://") == 0){
// return null;
// }else{
// return "";
// }
// }
// }});
final AlertDialog dlg = new AlertDialog.Builder(PlaylistActivity.this).setView(edit).setTitle("请输入播放地址").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String mRTSPUrl = String.valueOf(edit.getText());
if (TextUtils.isEmpty(mRTSPUrl)) {
return;
}
// if (!isPro()){
// if (mRTSPUrl.toLowerCase().indexOf("rtsp://")!=0){
// Toast.makeText(PlaylistActivity.this,"不是合法的RTSP地址,请重新添加.",Toast.LENGTH_SHORT).show();
// return;
// }
// }else{
// // if (mRTSPUrl.toLowerCase().indexOf("rtsp://")!=0 && mRTSPUrl.toLowerCase().indexOf("rtmp://")!=0 && mRTSPUrl.toLowerCase().indexOf("http://")!=0 && mRTSPUrl.toLowerCase().indexOf("https://")!=0&& mRTSPUrl.toLowerCase().indexOf("hls://")!=0){
// // Toast.makeText(PlaylistActivity.this,"不是合法的地址,请重新添加.",Toast.LENGTH_SHORT).show();
// // return;
// // }
// }
ContentValues cv = new ContentValues();
cv.put(VideoSource.URL, mRTSPUrl);
TheApp.sDB.insert(VideoSource.TABLE_NAME, null, cv);
mCursor.close();
mCursor = TheApp.sDB.query(VideoSource.TABLE_NAME, null, null, null, null, null, null);
mRecyclerView.getAdapter().notifyItemInserted(mCursor.getCount() - 1);
showOrHideEmptyView();
}
}).setNegativeButton("取消", null).create();
dlg.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, InputMethodManager.SHOW_IMPLICIT);
}
});
dlg.show();
}
});
mBinding.toolbarAbout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(PlaylistActivity.this, AboutActivity.class));
}
});
String url = "http://www.easydarwin.org/versions/easyplayer_rtmp/version.txt";
update = new UpdateMgr(this);
update.checkUpdate(url);
}
Aggregations