Come accedere alle risorse (come suono, immagini ecc.) Direttamente dal codice nativo utilizzando Android-NDK?

Voglio sapere come posso accedere direttamente alle risorse come immagini, file audio, ecc da file nativi, cioè file C ++. In realtà sto cercando qualche esempio che potrebbe aiutarmi a utilizzare i methods asset_manager_jni.h.

Cerca suggerimenti. Grazie in anticipo.

  • Mantenere un servizio in esecuzione anche quando il telefono è addormentato?
  • Ottieni la risoluzione dello schermo reale su Ice Cream Sandwich
  • È ansible avviare un'attività di applicazione Android quando si avvia il telefono?
  • Nascondi il conto fittizio per l'adattatore di sincronizzazione dalle impostazioni
  • Eclipse non riconoscerà il mio tablet Android quando provo a provare la mia applicazione?
  • Imansible risolvere il simbolo 'Auth' per l'integrazione google in android studio
  • Con rispetto,

    Atul Prakash Singh

  • android ottiene video thumbnail PATH, non Bitmap
  • takePicture non è rioutput quando si esegue un servizio camera
  • Eclipse ADT Plugin - Nessun objective di costruzione disponibile
  • Come conservare saldamente le credenziali (password) nell'applicazione Android?
  • Il discorso al riconoscimento di text non è stato trovato
  • Bad 'Patches' in 9-Patch File
  • 2 Solutions collect form web for “Come accedere alle risorse (come suono, immagini ecc.) Direttamente dal codice nativo utilizzando Android-NDK?”

    Beh, hai accesso a stdio.h. Quindi, se è in un luogo conosciuto (diciamo sulla scheda SD), puoi solo usare questo come un path. E c'è molto di tutorial sulla networking circa caldo per usare stdio (fopen, fclose, ecc).

    Il problema è che le risorse che si abbinano all'APK stesso (in res / raw o asset) rimangono nell'applicazione dopo l'installazione. Quel che è peggio è che per impostazione predefinita, saranno compressi che rendono la lettura non fattibile. Ciò può essere evitato e il modo più semplice è rinominare l'asset per avere l'estensione .mp3 (o ci sono altri). La ragione di questo è perché, per impostazione predefinita, .mp3 non è compresso, indipendentemente dal fatto che sia effettivamente un file mp3). Ci sono altre estensioni che puoi utilizzare e modi per dire agli strumenti di non comprimere i tuoi dati se non ti piace nominare tutti i tuoi asset con .mp3 alla fine.

    Quindi, hai qualche scelta qui:

    1. Scaricate le risorse dalla networking nella tua prima esecuzione, mettetele in un luogo discreto (probabilmente è meglio get quel path dalla SDK quando fai il download) e usalo.

    2. Memorizzare le risorse nell'app (ricorda l'estensione .mp3, nella cartella degli asset). Nella tua prima esecuzione, estraete le risorse in una cartella a cui hai accesso (e non infastidisci l'utente) e utilizza le risorse da lì.

    3. (cosa faccio) Memorizza le tue risorse nell'app (.mp3) e usa il jni per leggerlo direttamente dall'APK. Sì, il jni è un po 'lento, ma non dovresti leggere dal file system tanto, comunque, e certamente non in un punto critico di performance. Nvidia ha un codice molto utile che puoi usare, puoi trovarlo qui , nel codice di esempio se mi ricordo. All'interno della cartella libs sono alcune buone librerie di uso generale che è ansible utilizzare che corrisponde a stdio, ad exception del fatto che legge anche dall'APK.

    Spero che sia d'aiuto.

    Ho usato questo trucco una volta:

    mv $file lib/lib%${file}.so 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.