2012-01-24 21 views
3

我開發的應用程序在黑莓有照片功能。我想從圖庫中獲取照片並在位圖字段中顯示它。請有任何機構有想法請寄給我。 thanx提前..如何從黑莓畫廊獲取圖片?

+0

使用filePicker從SDCard獲取圖像;並在屏幕上顯示; – alishaik786

+0

選中此鏈接。可能對你有幫助。 http://supportforums.blackberry.com/t5/Java-Development/How-can-I-add-image-to-galery-and-view-it-from-BlackBerry-Media/td-p/333842 – Sarah

回答

3

FilePicker是主要概念;我正在拍攝SDCard圖像。所以,在測試之前在模擬器中設置sdcard;

試試這個示例代碼:

import net.rim.device.api.ui.picker.FilePicker; 
import net.rim.device.api.ui.picker.FilePicker.Listener; 

public class FilePickerScreen extends MainScreen implements FieldChangeListener 
{  
Bitmap bitmap; 
ButtonField click; 
BitmapField bitmapField; 
public FilePickerScreen() 
{ 
    setTitle("FilePicker Screen"); 
    createGUI(); 
} 

private void createGUI() 
{ 
    add(new LabelField("Click to select the image", Field.FIELD_HCENTER)); 
    click=new ButtonField("Click"); 
    click.setChangeListener(this); 
    add(click);   
    bitmapField=new BitmapField(); 
    add(bitmapField); 
} 

private Bitmap getTheImage(String url) 
{ 
    Bitmap bitmap=null,scaleBitmap=null; 
    InputStream inputStream=null; 
    FileConnection fileConnection=null;  
    try 
    { 
     fileConnection=(FileConnection) Connector.open(url); 
     inputStream=fileConnection.openInputStream();   
     byte[] data=new byte[(int)fileConnection.fileSize()];   
     data=IOUtilities.streamToBytes(inputStream); 
     inputStream.close(); 
     fileConnection.close(); 
     bitmap=Bitmap.createBitmapFromBytes(data,0,data.length,1); 

     //You can return this bitmap otherwise, after this you can scale it according to your requirement; like... 
     scaleBitmap=new Bitmap(150, 150); 
     bitmap.scaleInto(scaleBitmap, Bitmap.FILTER_LANCZOS);   
    } 
    catch (Exception e) 
    { 
     try 
     { 
      if(inputStream!=null) 
      { 
       inputStream.close();     
      } 
      if(fileConnection!=null) 
      { 
       fileConnection.close(); 
      } 
     } 
     catch (Exception exp) 
     { 

     } 
     scaleBitmap=Bitmap.getBitmapResource("noimage.png");//Your known Image;  
    } 
    return scaleBitmap; 
} 

public void fieldChanged(Field field, int context) 
{ 
    if(field==click) 
    { 
     try 
     { 
      FilePicker filePicker; 
      filePicker=FilePicker.getInstance(); 
      filePicker.setPath("file:///SDCard/BlackBerry/pictures/"); 
      filePicker.setListener(new Listener() 
      {  
       public void selectionDone(String path) 
       { 
        bitmapField.setBitmap(getTheImage(path)); 
       } 
      }); 
      filePicker.show();//it show what ever you select. 
     } 
     catch (Exception e) 
     { 
      StartUp.exceptionHandling(e.getMessage()); 
     } 
    }  
} 
} 

我想這可能是您的要求;

+0

Thanx爲rply。這工作很好。 – Hasmukh

2

這取決於您的目標操作系統版本。我建議使用6.0以上的FilePicker API(實際上它可以從5.0操作系統下載,但是在一些次要操作系統版本上有問題)。而對於較低的操作系統版本,我建議你使用article來實現你自己的實現。