2012-06-25 1 views
8

Ниже приведен код, с которым я справляюсь с печатью логотипа. Логотип помещается в папку res/drawable. Когда я запускаю приложение, он бросает:Как получить экземпляр файла с возможностью рисования?

java.io.FileNotFoundException: /android.resource:/com.android.test/2130837505 (No such file or directory). 

Любой совет?

public boolean printLogo() 
    { 
     Uri logo_path = Uri.parse("android.resource://com.android.test/" + R.drawable._logo); 
     File logo = new File(logo_path.toString()); 
     byte[] logo_bytes = new byte[(int) logo.length()]; 
     System.out.print("Length:" + logo.length()); 
     FileInputStream fs; 
     try { 
      fs = new FileInputStream(logo); 
      fs.read(logo_bytes); 
      fs.close(); 
      mChatService.write(logo_bytes); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
+0

может у объяснить вашу проблему, что у пытаются сделать? –

+0

Я пытаюсь распечатать растровое изображение через подключенный через Bluetooth принтер. 'mChatService.write (Byte [] b [])' is where 'OutputStream.write (Byte [] b [])' выполняется. В этом случае мне нужно передать битмап в массив байтов. Я поместил растровое изображение в папку res/drawable и написал код выше, после чего я обнаружил исключение FileNotFoundException, как я описал. – user1437534

+0

см. Dheeresh ответ, я думаю, что это поможет u –

ответ

10

да вы должны добавить ресурс такого типа под активами или сырым каталог ...

но если вы have any limitation анс вам нужен только массив байтов можно попробовать

Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), 
              R.drawable.icon_resource); 

    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 
+0

, но это создает новую проблему. С помощью этого byteArray вместо изображения было напечатано куча нечитаемого, грязного кода. Изображение, которое я обычно печатаю, является PNG, принтер, который я использую, является черно-белым принтером. Вы не знаете, что может быть проблемой? – user1437534

+0

Насколько я вижу, PNG черный. – user1437534

+0

Что такое тип изображения (jpg/png), из которого мы получаем массив байтов ... –

0

Положи ресурсы изображений под активы папку, а затем можно использовать для получения AssetManagerInputStream от ресурса.

AssetManager mgr = context.getAssets(); 
FileInputStream fin = (FileInputStream)mgr.open("path/filename"); 

path не должен содержать папку с активами.

+0

, здесь 'filename' включает расширение, например, '. Png'? – user1437534

+0

есть. Структура папок - это 'assets> images> new.png', тогда путь будет' images/new.png' – Ronnie