工作时,我有一个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中建立基本的Android项目
创建一个Hello World,Android的Eclipse项目中。转到“新建”>“项目> Android项目。为项目作为MediaScannerDemo和选择Android运行时2.1 SDK 7 名。我已经给包名net.viralpatel.android.mediascanner
。
一旦你完成了上述步骤,你将有一个基本的Hello World Android应用程序。
第2步:改变布局
在我们的演示,我们需要简单的布局。只需一个按钮触发图像扫描仪的工作。
开放式布局/在你的Android项目的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模拟器或实际设备,看看下面的输出。
在媒体扫描仪在点击的触发媒体扫描仪按钮,调用,我们可以看到,在标题栏。