2012-06-25 11 views
8

Unten ist der Code, den ich mit dem Logodruck verarbeite. Das Logo befindet sich im Ordner res/drawable. Wenn ich die App starte, gibt es:Wie bekomme ich eine Datei-Instanz von einem Zeichensatz?

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

Irgendwelche Tipps?

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

u kann Ihr Problem erklären, was u versuchen zu tun? –

+0

Ich versuche, eine Bitmap über einen Bluetooth-fähigen Drucker zu drucken. 'mChatService.write (Byte [] b [])' ist die Stelle, an der 'OutputStream.write (Byte [] b [])' ausgeführt wird. In diesem Fall muss ich eine Bitmap in ein Byte-Array übertragen. Ich legte die Bitmap in den Ordner res/drawable und schrieb den Code oben, dann stieß ich auf die FileNotFoundException genau wie ich beschrieben habe. – user1437534

+0

siehe Dheeresh Antwort ich denke, das wird dir helfen –

Antwort

10

ja, sollten Sie die Ressource dieser Art unter den Vermögenswerten oder roh Verzeichnis hinzufügen ...

aber wenn Sie have any limitation ans Sie brauchen nur Array Byte versuchen

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

das funktioniert, aber ein neues Problem auftritt. Mit diesem ByteArray wurde eine Reihe von unlesbarem, unordentlichem Code anstelle eines Bildes gedruckt. Das Bild, das ich zu drucken tendiere, ist ein PNG, der Drucker, den ich verwende, ist ein schwarz-weißer Drucker. Hast du eine Idee, was das Problem sein könnte? – user1437534

+0

soweit ich sehe, ist das PNG schwarz weiß. – user1437534

+0

Was ist der Bildtyp (jpg/png) von dem wir das Byte-Array bekommen ... –

0

Ihr Bild Ressourcen unter den Vermögenswerten Put Ordner zuerst, dann die AssetManager für das Erhalten InputStream von Ressource verwenden können.

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

path sollten nicht die Vermögenswerte Ordner enthalten.

+0

enthält der 'Dateiname' hier die Erweiterung, z. B. '. Png'? – user1437534

+0

ja .. z.B. Ordnerstruktur ist 'Assets> Bilder> new.png' Pfad wird dann 'images/new.png' – Ronnie