`
longgangbai
  • 浏览: 7339007 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GIS的学习(四十四)osmdroid sdcard检查

 
阅读更多

     在许多应用中使用到sdcard的检查,在osmdroid当下载比较大的文件时候,需要检查sdcard是否挂载,

在android应用注册一个广播,监听事件是否为挂载或者卸载sdcard的事件,当卸载或者加载sdcard给出提示。

 

重点代码如下:

	/**
	 * This broadcast receiver will recheck the sd card when the mount/unmount messages happen
	 *
	 */
	private class MyBroadcastReceiver extends BroadcastReceiver {

		@Override
		public void onReceive(final Context aContext, final Intent aIntent) {

			final String action = aIntent.getAction();

			checkSdCard();

			if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
				onMediaMounted();
			} else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {
				onMediaUnmounted();
			}
		}
	}

 

检查方法为:

	private void checkSdCard() {
		final String state = Environment.getExternalStorageState();
		logger.info("sdcard state: " + state);
		mSdCardAvailable = Environment.MEDIA_MOUNTED.equals(state);
	}

 

 

完整代码如下:

package org.osmdroid.tileprovider.modules;

import org.osmdroid.tileprovider.IRegisterReceiver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Environment;

public abstract class MapTileFileStorageProviderBase extends MapTileModuleProviderBase {

	private static final Logger logger = LoggerFactory.getLogger(MapTileFileStorageProviderBase.class);

	/** whether the sdcard is mounted read/write */
	private boolean mSdCardAvailable = true;

	private final IRegisterReceiver mRegisterReceiver;
	private MyBroadcastReceiver mBroadcastReceiver;

	public MapTileFileStorageProviderBase(final IRegisterReceiver pRegisterReceiver,
			final int pThreadPoolSize, final int pPendingQueueSize) {
		super(pThreadPoolSize, pPendingQueueSize);

		checkSdCard();

		mRegisterReceiver = pRegisterReceiver;
		mBroadcastReceiver = new MyBroadcastReceiver();

		final IntentFilter mediaFilter = new IntentFilter();
		mediaFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
		mediaFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
		mediaFilter.addDataScheme("file");
		pRegisterReceiver.registerReceiver(mBroadcastReceiver, mediaFilter);
	}

	private void checkSdCard() {
		final String state = Environment.getExternalStorageState();
		logger.info("sdcard state: " + state);
		mSdCardAvailable = Environment.MEDIA_MOUNTED.equals(state);
	}

	protected boolean getSdCardAvailable() {
		return mSdCardAvailable;
	}

	@Override
	public void detach() {
		if (mBroadcastReceiver != null) {
			mRegisterReceiver.unregisterReceiver(mBroadcastReceiver);
			mBroadcastReceiver = null;
		}
		super.detach();
	}

	protected void onMediaMounted() {
		// Do nothing by default. Override to handle.
	}

	protected void onMediaUnmounted() {
		// Do nothing by default. Override to handle.
	}

	/**
	 * This broadcast receiver will recheck the sd card when the mount/unmount messages happen
	 *
	 */
	private class MyBroadcastReceiver extends BroadcastReceiver {

		@Override
		public void onReceive(final Context aContext, final Intent aIntent) {

			final String action = aIntent.getAction();

			checkSdCard();

			if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
				onMediaMounted();
			} else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {
				onMediaUnmounted();
			}
		}
	}
}

 

分享到:
评论

相关推荐

    Android获取sdcard 信息

    #### 四、更新UI显示SDCard信息 最后,我们可以通过更新进度条和文本视图来直观展示SDCard的使用情况。这通常涉及到计算SDCard的使用百分比,并将其设置为进度条的值,同时在文本视图中显示可用容量和总容量的大小...

    Android 平台上SDCard的自动mount的解决方法

    在此菜单中,可以检查SDCard驱动相关的配置项是否已经被选中。如果未选中,则需要勾选后重新编译内核。 2. **验证驱动加载情况**:在Android设备启动过程中,通过日志工具(如`logcat`)查看是否有SDCard驱动加载...

    检测当前系统中是否存在sdcard,并在sdcard中创建一个文件

    综上所述,检测Android系统中是否存在SDcard并创建文件的过程涉及到Android的存储权限管理、SDcard状态检查、文件系统的操作以及Java IO流的使用。在开发过程中,要遵循Android的最佳实践,确保应用在不同版本的...

    Android写入SDCard

    #### 四、检查SDCard状态 在执行任何操作之前,需要确保SDCard已插入设备中且处于可读写状态。可以通过`Environment.getExternalStorageState()`方法来获取当前SDCard的状态: ```java if (Environment....

    android中sdcard的读写.doc

    ### Android中SDCard的读写操作详解 #### 一、SDCard访问概述 在Android开发过程中,对于外部存储(如SDCard)的读写是非常常见的需求。本文将详细介绍如何在Android应用中对SDCard进行读写操作,包括获取缓存目录...

    预置一些文件到系统sdcard目录.txt

    预置一些文件到系统sdcard目录

    android 读取外置SDCard

    在PicoSDCardSample这样的示例项目中,通常会包含完整的代码示例,展示如何实现上述操作,包括错误处理和权限管理,这对于学习和理解如何在Android中操作外置SDCard非常有帮助。开发者应仔细研究这些示例,以更好地...

    修改system读取sdcard权限.rar

    在Android系统中,由于安全性和隐私保护的考虑,对应用程序访问外部存储卡(SDcard)的权限有着严格的控制。在Android 6.0(API级别23)之后,系统引入了运行时权限管理机制,应用需要在运行时请求访问SDcard的权限...

    从SDCard中读取文本内容

    step 3:检测sdcard中mana文件夹下是否有test.txt文件,如果有则读取文件内容,如果没有则从assets中把test.txt文件拷贝到sdcard的mana文件夹下,然后读取sdcard中的test.txt文件内容。 step 4:把文件内容显示到...

    安卓模拟器sdcard.img文件打开修改

    这时,就需要了解如何打开并修改安卓模拟器的`sdcard.img`文件。`sdcard.img`文件是Android模拟器中代表SD卡的镜像文件,它包含了模拟器SD卡的所有数据。下面我们将详细探讨如何处理这个文件以及相关的工具。 1. **...

    SDcard 接口 协议 时序图

    综上所述,这些文档和资源为学习和理解SDcard接口协议提供了全面的信息,无论是对于硬件工程师设计嵌入式系统,还是软件开发者编写驱动程序,都是宝贵的参考资料。通过深入研究这些材料,可以更好地掌握SDcard接口的...

    android中关于SDCard文件存储的操作

    android应用开发中关于SDCard读写操作的实例代码,在下载学习SDCard操作中,碰到很棘手的问题了。不过最后还在我的坚持下成功了,

    安卓检查Sdcard剩余空间的示例

    本示例将详细讲解如何通过编程方式检查Android设备SD卡的剩余空间。 首先,我们需要获取到SD卡的根目录。在Android中,`Environment`类提供了对外部存储的访问,我们可以使用`getExternalStorageDirectory()`方法来...

    android 模拟器中使用SDCard

    如何在 android 模拟器中使用SDCard

    Android应用源码SdCard读写文件实例

    在Android平台上,对SDCard(外部存储)进行文件读写是常见的操作,尤其对于需要存储用户数据或资源的应用来说更是必不可少。本实例将探讨如何在Android应用中实现SdCard的读写功能。 首先,我们需要了解Android对...

    TI_SDCard_boot_utility_v1_0.exe

    标题中的"TI_SDCard_boot_utility_v1_0.exe"是一个特定的程序,由TI(Texas Instruments)公司开发,用于SD卡的启动和管理。这个工具可能是一个实用程序,帮助用户格式化、初始化或者配置SD卡以供特定的TI处理器或微...

    Android 模拟器sdcard相关

    3. **空的sdcard**:如果模拟器启动后sdcard为空,检查是否正确指定了sdcard文件路径。 4. **文件不显示**:如果文件无法在模拟器中看到,可能是路径格式错误或文件类型不兼容。确保使用正确的路径格式(如斜杠方向...

    android音乐播放器,四大组件的很好学习实例,音乐列表从sdcard中读取

    这是一个android音乐播放器的实例,下载即可运行,MediaPlayer类的使用,所有的音乐从sdcard中读取,综合了android的四大组件,掌握了这个项目,相信你的android会得到很大的提升。

    android模拟器中使用SDCard

    其中SD卡(Secure Digital Card,简称SDCard)在Android设备中主要用作存储扩展,它可以用来存放各种数据文件,比如图片、音乐和视频等。在Android模拟器中模拟SD卡的使用主要包含以下几个方面知识点: 首先,了解...

Global site tag (gtag.js) - Google Analytics