0

これは、アプリケーションのネイティブ アイコンを取得して最初に表示し、最終的に Blob としてデータベースに送信する方法です。

Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("application_name");
            builder.setMessage("Vous avez cliqué sur : " + resolveInfo.activityInfo.name);
            Drawable iconApp;
            iconApp=resolveInfo.activityInfo.loadIcon(getPackageManager());

            BitmapDrawable bmd = (BitmapDrawable) iconApp;
            Bitmap bm = bmd.getBitmap();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte[] bitmapdata = stream.toByteArray();
            SQLiteAdapter mySQLiteAdapter =new SQLiteAdapter(this.getApplicationContext());
            mySQLiteAdapter.openToWrite();
            String s=resolveInfo.activityInfo.name;
            mySQLiteAdapter.insertphoto(bitmapdata);
            mySQLiteAdapter.insert(s);

**そして私はそれを取り戻そうとしています:**そのように:

SQLiteAdapter mySQLiteAdapter =new SQLiteAdapter(getApplicationContext());
                     mySQLiteAdapter.openToRead();
                     byte[] buffer = mySQLiteAdapter.queueAllphoto();
                     mySQLiteAdapter.close();

                     Drawable image = null;
                     image =  new BitmapDrawable(BitmapFactory.decodeByteArray(buffer, 0, buffer.length));
                     Bitmap b= convertByteArrayToBitmap(buffer);

                     //Bitmap bmp = BitmapFactory.decodeByteArray(content,0,content.length);

                     //image =  new BitmapDrawable(BitmapFactory.decodeByteArray(content, 0, content.length));
                     Builder builder = new AlertDialog.Builder(getBaseContext());
                     builder.setTitle("blob");
                     builder.setIcon(image);
                     builder.show();

そして最終的にここで、クラス SQliteAdapter の私の mmethode queuAllphoto 部分:

public byte[] queueAllphoto(){
        String[] columns = new String[]{KEY_CONTENT_photo};
        Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE_photo, columns, 
                null, null, null, null, null);
        byte[] result = null; 

        int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT_photo);
        for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
            result = cursor.getBlob(index_CONTENT) ;
        }

        return result;
    }

そのメソッドはバイト配列を返します。たとえば、AlerDialogue で各ブロブを表示することで作業したいバイト配列です! Builder(AlertDialogue で使用することを考えているため、このバイト配列をドローアブルに変換するのに苦労しています。 ) メソッド SetIcon(Drawable) を使用

4

1 に答える 1

1

戻り値のタイプを変更し(バイト配列ではなくビットマップ)、bitmap=BitmapFactory.decodeByteArray(result, 0, result.length) を追加することで、ビットマップを使用して、このようなイメージビューの例を変更できるようになりました。

 Bitmap bm = null;
                 SQLiteAdapter mySQLiteAdapter =new SQLiteAdapter(getApplicationContext());
                 mySQLiteAdapter.openToRead();
                 bm=mySQLiteAdapter.queueAllphoto();
                 mySQLiteAdapter.close();
                 imageview.setImageBitmap(bm);

そこで、メソッド queueAllphoto() を取得しました。

public Bitmap queueAllphoto(){

     Bitmap bitmap;

    String[] columns = new String[]{KEY_CONTENT_photo};
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE_photo, columns, 
            null, null, null, null, null);
    byte[] result = null; 

    int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT_photo);
    for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
        result = cursor.getBlob(index_CONTENT) ;


    }

    bitmap=BitmapFactory.decodeByteArray(result, 0, result.length);
    return bitmap;
}
于 2013-02-05T10:45:57.317 に答える