zoukankan      html  css  js  c++  java
  • Android 编译笔记20191205

    gradle下载很慢

    解决问题的方法如下:
    使用文件管理器 打开用户主目录

    windows平台: c:Users用户名.gradle

    macos平台: /Users/用户名/.gradle

    linux平台: /home/用户名/.gradle

    找到./gradle/wrapper/dist/ 目录

    找到对应的gradle-版本好-all的文件夹,进入到里面,如下图:

    去官方网站下载这个版本号对应的安装包 https://services.gradle.org/distributions/

    把下载下来的zip压缩文件 放到对应版本的子目录名里面 (目录名由字母和数字组成)

    images/191213/fs2019121300002R.jpg
    将压缩文件放入这个目录,我解压了一下,好像没有影响编译。

    android 项目下载依赖jar包慢

    解决:

    build.gradle 文件中添加国内镜像

    repositories {
            maven{ url 'https://maven.aliyun.com/repository/public/'}
            jcenter()
            //maven {url 'https://jitpack.io'}
            //maven {url 'https://maven.google.com'}
        }
    

    References

    Android videoview

    播放网络视频

    AndroidMainfest.xml 新增网络的访问权限

    <uses-permission android:name="android.permission.INTERNET"/>
    

    在布局中添加

     <VideoView
                   android:id="@+id/video_preview"
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:layout_gravity="center" />
    
    //引入包
    import android.widget.VideoView;
    import android.widget.MediaController;
    import android.net.Uri;
    
    //原生的videoview和控制
    private VideoView mVideoView;
    private MediaController mMediaController;
    
    
    mVideoView = findViewById(R.id.video_preview);
    mMediaController = new MediaController(MainActivity.this);
    
    //将路径转换成uri
    Uri uri = Uri.parse(videoUrl);
    mVideoView.setVideoURI(uri);
    mVideoView.setMediaController(mMediaController);
    mVideoView.getBufferPercentage();
    mVideoView.seekTo(0);
    mVideoView.requestFocus();
    

    References

    Android 下载网络的mp4文件

    AndroidMainfest.xml 新增文件写入的权限

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

    代码记录:

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.BufferedInputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import android.os.Environment;
    import java.net.URL;
    import java.net.HttpURLConnection;
    import java.io.IOException;
    import java.io.InputStream;
    import android.content.Intent;
    import android.app.ProgressDialog;
    
    //使用
    final ProgressDialog pd;
    pd = new ProgressDialog(MainActivity.this);
    pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    pd.setMessage("下载中...");
    pd.setCanceledOnTouchOutside(false);
    pd.show();
    new Thread() {
        @Override
        public void run() {
            try {
                File file = getFileFromServer('http://www.example.com/example.mp4', pd);
                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file)));
    
                sleep(1000);
                pd.dismiss(); // 结束掉进度条对话框
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
                        
    
    /**
         * 将MP4文件存入到 应用的路径 files下
         * 固定是: Android/data/你的包名/files
         * @param path
         * @param pd
         * @return
         * @throws Exception
         */
    public  File getFileFromServer(String path, ProgressDialog pd) throws Exception {
            // 如果相等的话表示当前的sdcard挂载在手机上并且是可用的
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                String path3 = getExternalFilesDir(null).getPath();
                File mediaStorageDir = new File(path3);
                if (!mediaStorageDir.exists()) {
                    if (!mediaStorageDir.mkdirs()) {
                        showPromptToast("文件夹创建失败"+path3);
                        return null;
                    }
                }
    
                URL url = new URL(path);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(5000);
                // 获取到文件的大小
                pd.setMax(conn.getContentLength());
                InputStream is = conn.getInputStream();
                if (!mediaStorageDir.exists()) {
                    mediaStorageDir.mkdir();
                }
                // 文件根据当前的毫秒数给自己命名
                SimpleDateFormat myFmt = new SimpleDateFormat("yyyyMMddHHmmss");
                Date now = new Date();
                String videoFileName = "D" + myFmt.format(now);
                String suffix = ".mp4";
                File file = new File(mediaStorageDir + File.separator + videoFileName + suffix);
                FileOutputStream fos = new FileOutputStream(file);
                BufferedInputStream bis = new BufferedInputStream(is);
                byte[] buffer = new byte[1024];
                int len;
                int total = 0;
                while ((len = bis.read(buffer)) != -1) {
                    fos.write(buffer, 0, len);
                    total += len;
                    // 获取当前下载量
                    pd.setProgress(total);
                }
                fos.close();
                bis.close();
                is.close();
                return file;
            } else {
                return null;
            }
        }
        
    

    References

    edittext focus

    1.在布局文件中给edittext的父控件增加两个属性(我编写代码时,没有给Edittext添加这2个属性)
    android:focusable="true"
    android:focusableInTouchMode="true"

    2.直接调用edittext的clearFocus()方法,不过该方法有时候会不生效

    //searchView.setFocusable(true);
    //searchView.setFocusableInTouchMode(true);
    //searchView.requestFocus();
    searchView.clearFocus();//失去焦点
    //searchView.requestFocus();//获取焦点
    

    References

  • 相关阅读:
    CodeForces 916A Jamie and Alarm Snooze (水题)
    BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)
    BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)
    HDU 1695 GCD (莫比乌斯反演)
    如何分析解决Android ANR
    Android网络编程系列 一 TCP/IP协议族之链路层
    Android网络编程系列 一 TCP/IP协议族之网际层
    Android网络编程系列 一 TCP/IP协议族之传输层
    Android网络编程系列 一 TCP/IP协议族
    Android网络编程系列 一 JavaSecurity之JSSE(SSL/TLS)
  • 原文地址:https://www.cnblogs.com/fsong/p/12036672.html
Copyright © 2011-2022 走看看