Как я могу получить изображение из галереи в Blackberry? - PullRequest
3 голосов
/ 24 января 2012

Я занимаюсь разработкой приложения в Blackberry, которое имеет функциональность фото. Я хочу получить фотографию из галереи и показать ее в поле Растровое изображение. У кого-нибудь есть идеи для этого, пожалуйста, пришлите мне. Спасибо заранее ..

Ответы [ 2 ]

3 голосов
/ 24 января 2012

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());
        }
    }       
}   
}

Я думаю, что это может быть вашим требованием;

2 голосов
/ 24 января 2012

Это зависит от вашей целевой версии ОС. Я бы предложил использовать API FilePicker для 6.0+ (на самом деле он доступен для ОС 5.0, но есть проблемы с некоторыми второстепенными версиями ОС). А для более низких версий ОС я бы предложил вам использовать эту статью , чтобы иметь собственную реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...