Search in sources :

Example 1 with StringSignature

use of com.bumptech.glide.signature.StringSignature 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);
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) DialogInterface(android.content.DialogInterface) InputMethodManager(android.view.inputmethod.InputMethodManager) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) StringSignature(com.bumptech.glide.signature.StringSignature) ContentValues(android.content.ContentValues) EditText(android.widget.EditText) VideoSourceItemBinding(org.esaydarwin.rtsp.player.databinding.VideoSourceItemBinding) ViewGroup(android.view.ViewGroup) Intent(android.content.Intent) UpdateMgr(org.easydarwin.update.UpdateMgr) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) RecyclerView(android.support.v7.widget.RecyclerView) RecyclerView(android.support.v7.widget.RecyclerView) File(java.io.File)

Example 2 with StringSignature

use of com.bumptech.glide.signature.StringSignature in project EasyPlayer-RTMP-Android by EasyDSS.

the class PlayFragment2 method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    final View view = inflater.inflate(R.layout.fragment_play_glsurfaceview, container, false);
    view.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            PlayActivity activity = (PlayActivity) getActivity();
            activity.onPlayFragmentClicked(PlayFragment2.this);
        }
    });
    cover = (ImageView) view.findViewById(R.id.surface_cover);
    // Glide.with(this).load(PlaylistActivity.url2localPosterFile(getActivity(), mUrl)).diskCacheStrategy(DiskCacheStrategy.NONE).placeholder(R.drawable.placeholder).into(new ImageViewTarget<GlideDrawable>(cover) {
    // @Override
    // protected void setResource(GlideDrawable resource) {
    // int width = resource.getIntrinsicWidth();
    // int height = resource.getIntrinsicHeight();
    // fixPlayerRatio(view, container.getWidth(), container.getHeight(), width, height);
    // cover.setImageDrawable(resource);
    // }
    // });
    Glide.with(this).load(PlaylistActivity.url2localPosterFile(getActivity(), mUrl)).signature(new StringSignature(UUID.randomUUID().toString())).fitCenter().into(cover);
    return view;
}
Also used : PlayActivity(org.easydarwin.easyplayer.PlayActivity) GLSurfaceView(android.opengl.GLSurfaceView) ImageView(android.widget.ImageView) View(android.view.View) StringSignature(com.bumptech.glide.signature.StringSignature)

Example 3 with StringSignature

use of com.bumptech.glide.signature.StringSignature in project AgileDev by LZ9.

the class GlideImageLoader method getDrawableTypeRequest.

/**
 * 组装DrawableTypeRequest
 * @param context 上下文
 * @param manager 请求管理类
 * @param bean 构建实体
 */
@SuppressWarnings("unchecked")
private DrawableTypeRequest getDrawableTypeRequest(Context context, RequestManager manager, GlideBuilderBean bean) {
    DrawableTypeRequest request = manager.load(bean.path);
    if (bean.path instanceof byte[]) {
        // 修复glide加载byte数组图片无法缓存的BUG
        request.signature(new StringSignature(UUID.randomUUID().toString()));
    }
    // 设置加载图
    request.placeholder(bean.placeholderResId);
    // 设置加载失败图
    request.error(bean.errorResId);
    // 设置跳过内存缓存
    request.skipMemoryCache(!bean.saveToMemoryCache);
    // 配置磁盘缓存策略
    request = configDiskCacheStrategy(request, bean);
    if (bean.width > 0 && bean.height > 0) {
        // 设置图片宽高
        request.override(bean.width, bean.height);
    }
    if (bean.centerCrop) {
        request.centerCrop();
    }
    if (bean.fitCenter) {
        request.fitCenter();
    }
    if (bean.dontAnimate) {
        request.dontAnimate();
    }
    if (bean.crossFade) {
        request.crossFade();
    }
    if (bean.animResId != -1) {
        request.animate(bean.animResId);
    }
    if (bean.animator != null) {
        request.animate(bean.animator);
    }
    if (bean.requestListener != null) {
        // 设置请求监听器
        request.listener(bean.requestListener);
    }
    setTransformation(context, request, bean);
    return request;
}
Also used : DrawableTypeRequest(com.bumptech.glide.DrawableTypeRequest) StringSignature(com.bumptech.glide.signature.StringSignature)

Example 4 with StringSignature

use of com.bumptech.glide.signature.StringSignature in project EasyPlayer-RTMP-Android by EasyDSS.

the class PlayFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    final View view = inflater.inflate(R.layout.fragment_play, container, false);
    // view.setOnClickListener(new View.OnClickListener() {
    // @Override
    // public void onClick(View v) {
    // PlayActivity activity = (PlayActivity) getActivity();
    // activity.onPlayFragmentClicked(PlayFragment.this);
    // }
    // });
    cover = (ImageView) view.findViewById(R.id.surface_cover);
    if (!TextUtils.isEmpty(mUrl)) {
        Glide.with(this).load(PlaylistActivity.url2localPosterFile(getActivity(), mUrl)).signature(new StringSignature(UUID.randomUUID().toString())).fitCenter().into(cover);
    }
    return view;
}
Also used : ImageView(android.widget.ImageView) AngleView(org.easydarwin.easyplayer.views.AngleView) View(android.view.View) TextureView(android.view.TextureView) StringSignature(com.bumptech.glide.signature.StringSignature)

Aggregations

StringSignature (com.bumptech.glide.signature.StringSignature)4 View (android.view.View)3 ImageView (android.widget.ImageView)3 ContentValues (android.content.ContentValues)1 DialogInterface (android.content.DialogInterface)1 Intent (android.content.Intent)1 GLSurfaceView (android.opengl.GLSurfaceView)1 SwipeRefreshLayout (android.support.v4.widget.SwipeRefreshLayout)1 AlertDialog (android.support.v7.app.AlertDialog)1 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)1 RecyclerView (android.support.v7.widget.RecyclerView)1 TextureView (android.view.TextureView)1 ViewGroup (android.view.ViewGroup)1 InputMethodManager (android.view.inputmethod.InputMethodManager)1 EditText (android.widget.EditText)1 TextView (android.widget.TextView)1 DrawableTypeRequest (com.bumptech.glide.DrawableTypeRequest)1 File (java.io.File)1 PlayActivity (org.easydarwin.easyplayer.PlayActivity)1 AngleView (org.easydarwin.easyplayer.views.AngleView)1