如何从一个web应用程序设置主屏幕或锁屏图像

如何从一个web应用程序设置主屏幕或锁屏图像

在本教程中,我们会学习如何从相册中访问图片,并从一个web应用程序中选择图片设置成主屏幕或锁屏图片。

Tizen 应用程序API提供接口,从你的应用程序中启动一个供应者(或服务)应用程序。 在我们的例子中,我们会启动的供应者应用程序是相册应用程序,从这里我们会选择一个图片,这个图片将会被设置成主屏幕或锁屏的屏幕。 帮助我们实现的方法是,应用程序API的应用程序控制launchAppControl 为启动Gallery应用程序和SystemSetting API的 setProperty 方法,以将图片设置成主屏或锁屏。 

我们来理解如何启动供应者应用程序(本地的图库应用)。 首先,创建一个ApplicationControl对象,定义启动该应用程序所需的属性。选择一个文件的操作类型应该是“http://tizen.org/appcontrol/operation/pick",其URI为空,并且MIME类型是image/jpeg(对于jpeg图像),或者对于任何类型的图像文件是image/*。

var appControl = new tizen.ApplicationControl(
			    "http://tizen.org/appcontrol/operation/pick",
	      		     null,
			    "image/jpeg",
			     null);

现在,调用launchAppControl方法来启动合适的应用程序(图库应用),以便选择图像文件。

tizen.application.launchAppControl(appControl, null,
		    function() {console.log("Gallery launch successful"); },
		    function(e) {console.log("Gallery launch failed. Reason: " + e.message); }, GallareyImageSelected);

在成功地启动供应者应用程序(相册应用)后,被选择的图像数据信息将会被回传给调用的应用程序,作为一个回应,是在"ApplicationControlDataArrayReplyCallback"接口的成功的回调方法里面。

现在只有一个图像可以被选择,因此"gSelectedImagePath"保存被选择文件的路径。 一旦支持选择多个文件,需要使用数组来保存被选择文件的细节。

//Function to retrieve the selected image details from gallery
var GallareyImageSelected = {
	     onsuccess: function(data) {
	       for(var i=0; i < data.length; i++) {
	           console.log("#"+i+" key:"+data[i].key);
	           for(var j=0; j < data[i].value.length; j++) {
	              gSelectedImagePath= data[i].value[j];
	              console.log("   value#"+j+":"+data[i].value[j]);
	           }
	       }
	       console.log("Selected image: "+ gSelectedImagePath);
	    },
	    // Something went wrong
	    onfailure: function() {
	       console.log('The launch application control failed');
	    }
	 }

下面的函数会通过systemsetting API的"setProperty"方法,将被选择的图像设置成主屏或锁屏。

//Function to set the selected Image as homescreen or lockscreen
function setScreenMode() {
	var ImageSet = document.getElementsByName("image");
	var selected= 1;
	var screen=null;

	// check if the image is selected or not
	if(!gSelectedImagePath) {
	   alert("Image not selected. Please select image from gallery !!");
	   return 0;
	}

	// Get the selected screen mode option
	for(var i = 0; i < ImageSet.length; i++) {
	   if(ImageSet[i].checked) {
	       gScreenMode = ImageSet[i].value;
	       selected=0;
	    }
	  }

// Check if the screen mode is selected
if(selected)  {
 alert("Please select the screen to set and save");
 return 0;
}
else {
    switch (gScreenMode) {
        case "homescreen":
	             screen="HOME_SCREEN";
	             break;
        case "lockscreen":
     	   	     screen="LOCK_SCREEN";
	     	     break;
        default:
     	             console.log("Screen mode not set");
}
  // Sets the image as home screen or lock screen
  try {
  tizen.systemsetting.setProperty(screen, gSelectedImagePath, successCB, errorCB);
  } catch (err){
 	 console.log("Fail to setProperty " + err);
 	 alert("Screen mode not choosen or Unable to set screen mode");
  }

 }
}