短视频直播系统,动态内的图片实现长按保存

短视频直播系统,动态内的图片实现长按保存的相关代码

1.对于权限的注册

 

1
<br>   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  <br>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><br>    <uses-permission android:name="android.permission.INTERNET"/>

 

2.工具类

 

1
<br>public class DonwloadSaveImg {<br>    private static Context context;<br>    private static String filePath;<br>    private static Bitmap mBitmap;<br>    private static String mSaveMessage = "失败";<br>    private final static String TAG = "PictureActivity";<br>    private static ProgressDialog mSaveDialog = null;<br>    public static void donwloadImg(Context contexts, String filePaths) {<br>        context = contexts;<br>        filePath = filePaths;<br>        mSaveDialog = ProgressDialog.show(context, "保存图片", "图片正在保存中,请稍等...", true);<br>        new Thread(saveFileRunnable).start();<br>    }<br>    private static Runnable saveFileRunnable = new Runnable() {<br>        @Override<br>        public void run() {<br>            try {<br>                if (!TextUtils.isEmpty(filePath)) { //网络图片<br>                    // 对资源链接<br>                    URL url = new URL(filePath);<br>                    //打开输入流<br>                    InputStream inputStream = url.openStream();<br>                    //对网上资源进行下载转换位图图片<br>                    mBitmap = BitmapFactory.decodeStream(inputStream);<br>                    inputStream.close();<br>                }<br>                saveFile(mBitmap);<br>                mSaveMessage = "图片保存成功!";<br>            } catch (IOException e) {<br>                mSaveMessage = "图片保存失败!";<br>                e.printStackTrace();<br>            } catch (Exception e) {<br>                e.printStackTrace();<br>            }<br>            messageHandler.sendMessage(messageHandler.obtainMessage());<br>        }<br>    };<br>    private static Handler messageHandler = new Handler() {<br>        @Override<br>        public void handleMessage(Message msg) {<br>            mSaveDialog.dismiss();<br>            Log.d(TAG, mSaveMessage);<br>            Toast.makeText(context, mSaveMessage, Toast.LENGTH_SHORT).show();<br>        }<br>    };<br>    /**<br>     * 保存图片<br>     * @param bm<br>     * @throws IOException<br>     */<br>    public static void saveFile(Bitmap bm ) throws IOException {<br>        File dirFile = new File(Environment.getExternalStorageDirectory().getPath());<br>        if (!dirFile.exists()) {<br>            dirFile.mkdir();<br>        }<br>        String fileName = UUID.randomUUID().toString() + ".jpg";<br>        File myCaptureFile = new File(Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + fileName);<br>        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));<br>        bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);<br>        bos.flush();<br>        bos.close();<br>        //把图片保存后声明这个广播事件通知系统相册有新图片到来<br>        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);<br>        Uri uri = Uri.fromFile(myCaptureFile);<br>        intent.setData(uri);<br>        context.sendBroadcast(intent);<br>    }

 

 

3.主活动中权限的判断以及保存图片

 

1
<br>public class Main2Activity extends AppCompatActivity {<br>    private static int REQUEST_PERMISSION_CODE = 1;<br>    private String path="https://www.baidu.com/img/bd_logo1.png?where=super";<br>    @Override<br>    protected void onCreate(Bundle savedInstanceState) {<br>        super.onCreate(savedInstanceState);<br>        setContentView(R.layout.activity_main2);<br>        checkPermission();<br>    }<br>    private void checkPermission() {<br>        //检查权限(NEED_PERMISSION)是否被授权 PackageManager.PERMISSION_GRANTED表示同意授权<br>        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)<br>                != PackageManager.PERMISSION_GRANTED) {<br>            //用户已经拒绝过一次,再次弹出权限申请对话框需要给用户一个解释<br>            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission<br>                    .WRITE_EXTERNAL_STORAGE)) {<br>                Toast.makeText(this, "请开通相关权限,否则无法正常使用本应用!", Toast.LENGTH_SHORT).show();<br>            }<br>            //申请权限<br>            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CODE);<br>        } else {<br>            Toast.makeText(this, "授权成功!", Toast.LENGTH_SHORT).show();<br>            Log.e("aaaaa", "checkPermission: 已经授权!");<br>        }<br>    }<br>    public void write(View view) {   //按钮的点击事件<br>        DonwloadSaveImg.donwloadImg(Main2Activity.this,path);//iPath<br>    }<br>}

 

以上就是短视频直播系统,动态内的图片实现长按保存的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(329)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示