Android版本:触发媒体扫描仪编程方式

工作时,我有一个Android应用程序集成的摄像头API。用户可将拍摄的照片从应用程序并对其进行处理。Android的图片无法访问,直到您单击媒体扫描仪运行并建立索引。这是可能的,到triggeer编程媒体扫描仪在Android。检查下面的代码片段:

import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
...
...
sendBroadcast( new Intent(Intent.ACTION_MEDIA_MOUNTED, 
						Uri.parse("file://" + Environment.getExternalStorageDirectory()))
			);
...

在这里,我们使用的是sendBroadcast从Activity类的方法来发送一个广播消息的意图。对于我们的需要,我们已经使用ACTION_MEDIA_MOUNTED意图将调用媒体扫描仪。另外请注意,我们已经通过我们的外部存储目录的路径(URI)。

因此,在您的应用程序时,要触发媒体扫描仪,只需调用上述意图通过广播消息。

以下是实现这一目标的一个演示应用程序站长百科

演示程序

应用程序将非常简单。这将有一个按钮,“Trigger的媒体Scannerâ在它的点击,我们将调用上面的代码来触发媒体扫描仪sendBroadcast() 

第1步:在Eclipse中建立基本的Andr​​oid项目

创建一个Hello World,Android的Eclipse项目中。转到“新建”>“项目> Android项目为项目作为MediaScannerDemo和选择Android运行时2.1 SDK 7 我已经给包名net.viralpatel.android.mediascanner

一旦你完成了上述步骤,你将有一个基本的Hello World Android应用程序。

第2步:改变布局

在我们的演示,我们需要简单的布局。只需一个按钮触发图像扫描仪的工作。

开放式布局/在你的Andr​​oid项目的main.xml中,替换现有的内容与以下:

文件:RES /布局/ main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center">
    
    <Button 
    		android:id="@+id/buttonMediaScanner" 
    		android:layout_width="fill_parent" 
    		android:text="Trigger Media Scanner" 
    		android:textSize="25dp" 
    		android:layout_height="100dp"></Button>

</LinearLayout>

UI是非常简单的。之一的LinearLayout组织的按钮和一个按钮。请注意,我们将在Java代码中使用的ID按钮buttonMediaScanner

第3步:Android的Java代码来触发图像扫描仪意图

的开放MediaScannerDemoActivity类和添加下面的代码中的OnCreate()方法。

package net.viralpatel.android.mediascanner;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MediaScannerDemoActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button buttonMediaScanner = (Button) findViewById(R.id.buttonMediaScanner);
		
		//Add onClick event on Media scanner button   http://www.software8.co
		buttonMediaScanner.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View view) {
				
				//Broadcast the Media Scanner Intent to trigger it
				sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
						.parse("file://"
								+ Environment.getExternalStorageDirectory())));

				//Just a message
				Toast toast = Toast.makeText(getApplicationContext(),
						"Media Scanner Triggered...", Toast.LENGTH_SHORT);
				toast.show();
			}
		});

	}
}

因此,在OnCreate()中的方法,我们增加了一个OnClickListener按钮。在监听器类中,我们增加了逻辑,引发媒体扫描仪,另外还有一个TOAST消息显示用户已被触发,扫描仪。

Android应用程序的屏幕截图

塔塔€™一切!只要执行应用程序在Android模拟器或实际设备,看看下面的输出。

Android的媒体扫描仪触发

在媒体扫描仪在点击的触发媒体扫描仪按钮,调用,我们可以看到,在标题栏。
Android的媒体扫描仪应用程序


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值