Android获取外接U盘USB设备外接sd卡路径及文件的正确姿势

android应用开发中和U盘打交道的场景其实比较少,这次项目因为是做的汽车的中控系统里的一个视频播放应用,需求是可以播放插入的U盘里的视频。因为之前没有接触过这方面的东西,算是记录一下吧。主要分两步,第一:监听U盘的插拔;第二:获取U盘路径以及扫描该路径下所有文件。

1.监听U盘的插拔:
这里是通过系统广播来实现监听的,网上也有很多这方面的资料,但是很多说的方法是无效的,以下方式在5.0以上系统都验证过了是可以的。手里没有5.0以下的机子所以没验证5.0以下的系统,有需要的同学可以自己验证下。

public class ExternalStorageMonitor {
    public static final String TAG = "ExternalStorageMonitor";
    public static final String EXTERNAL_STORAGE_DEFAULT_PATH = "/mnt/media_rw";
    private static ExternalStorageMonitor mInstance;
    private List<ExternalStorageDeviceListener> deviceListeners;
    private Context mContext;

    public static ExternalStorageMonitor getInstance(Context context){
        if (mInstance == null){
            synchronized (ExternalStorageMonitor.class){
                if (mInstance == null){
                    mInstance = new ExternalStorageMonitor(context);
                }
            }
        }
        return mInstance;
    }

    private ExternalStorageMonitor(Context context) {
        mContext = context.getApplicationContext();
        deviceListeners = new ArrayList<>();
    }

    public boolean init(ExternalStorageDeviceListener listener) {
        addDeviceListener(listener);
        startMonitor();
        // 在系统启动前是否已经有设备插入
        detectDevice();
        return true;
    }

    public void addDeviceListener(ExternalStorageDeviceListener listener) {
        for (ExternalStorageDeviceListener deviceListener : deviceListeners) {
            if (listener == deviceListener) {
                return;
            }
        }
        deviceListeners.add(listener);
    }

    public void removeDeviceListener(ExternalStorageDeviceListener listener) {
        deviceListeners.remove(listener);
    }

    /**
     * 开始监听USB设备的插拔
     *
     */
    pr
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值