2012-06-25 6 views
8

Di seguito è riportato il codice che gestisco la stampa del logo. Il logo viene inserito nella cartella res/drawable. Quando eseguo l'app, viene generato:Come ottenere un'istanza di file di un drawable?

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

Qualche consiglio?

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 può spiegare il problema che u stanno cercando di fare? –

+0

Provo a stampare una bitmap tramite una stampante collegata tramite Bluetooth. 'mChatService.write (Byte [] b [])' è dove viene eseguito 'OutputStream.write (Byte [] b [])'. In tal caso, ho bisogno di trasferire una bitmap in un array di byte. Ho inserito la bitmap nella cartella res/drawable e ho scritto il codice sopra, quindi ho incontrato FileNotFoundException come ho descritto. – user1437534

+0

vedi risposta Dheeresh penso che questo ti aiuterà –

risposta

10

sì, si dovrebbe aggiungere la risorsa di questo tipo fra le attività o directory crudo ...

ma se si have any limitation ans avete solo bisogno di array di byte può provare

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

ma funziona un nuovo problema. Con questo byteArray, è stata stampata una serie di codice illeggibile e disordinato anziché un'immagine. L'immagine che tendo a stampare è un file PNG, la stampante che uso è una stampante bianca e nera. Hai idea di quale potrebbe essere il problema? – user1437534

+0

per quanto vedo, il PNG è bianco nero. – user1437534

+0

qual è il tipo di immagine (jpg/png) di cui stiamo ottenendo l'array di byte ... –

0

Metti le risorse di immagini tra le attività di cartella, quindi è possibile utilizzare il AssetManager per ottenere InputStream da risorsa.

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

path non deve contenere la cartella delle risorse.

+0

il 'nome file' qui include l'estensione, ad esempio '. Png'? – user1437534

+0

sì .. ad es. la struttura delle cartelle è 'assets> images> new.png', quindi il percorso sarà' images/new.png' – Ronnie

Problemi correlati