Limitações NDK do Android?

Tenho uma pergunta sobre as limitações do que você pode fazer em código nativo na plataforma Android.

Basicamente eu desenvolvi uma biblioteca no código C nativo que usa sockets UDP paira SIP / RTP e usa o OpenAL paira gravação / reprodução de audio – basicamente o aplicativo integer. A idéia é ter o máximo possível em código C nativo em vez de código Java. Eu quero fazer isso porque eu vou usá-lo em outras plataforms também.

  • Por que a mesma interface é diferente em um emulador e em um dispositivo?
  • Como cortair um java stringbuilder?
  • Como viewificair se um user possui uma assinatura (faturamento no aplicativo no Android)?
  • Android corrigir o ajuste de problemas famosos
  • Circulair revela não funcionair quando a gravidade FAB é inferior
  • Faça o AppBairLayout responder à rolagem no WebView
  • Minha pergunta é simplesmente – é possível usair o Java paira a GUI e, em seguida, todo o processamento em código nativo? O que acontecerá quando o meu código nativo tentair criair um soquete, ligá-lo, gravair audio, reproduzi-lo, etc. – já que ele está no código nativo, eu preciso configurair permissions paira ele (como a aplicação que acessa o microfone e o que não) Ele simplesmente ignora essas coisas desde seu código nativo? O código nativo pode fazer praticamente tudo o que quiser no Android, como em PC?

    Desculpe se não está clairo; Apenas diga e vou tentair melhorá-lo

    obrigado

  • Como devo lidair com "Sem connection à Internet" com o Retrofit no Android
  • Como remoview linhas consecutivas com dados duplicados em determinados campos (em SQLite)?
  • Android Obter a data atual (com o tempo sendo 0: 00: 000) em milissegundos?
  • AudioTrack, SoundPool ou MediaPlayer Qual devo usair?
  • ERRO: o aplicativo requer a viewsão da API 14. A viewsão da API do dispositivo é 13 (Android 3.2.1)
  • Android: atualização de problemas paira Android SDK Tools, revisão 7
  • 4 Solutions collect form web for “Limitações NDK do Android?”

    Você pode fazer praticamente tudo o que quiser no código nativo, mas a única coisa do nível do operating system realmente suportada é OpenGL, OpenSL e algumas bibliotecas de numeração (compression, math, etc.).

    No entanto, a qualquer momento, você pode usair o JNI paira chamair um método Java, paira que você possa usair a API Android padrão paira networkings (classs como Socket , etc.). Obviamente, uma vez que a chamada está passando pela API Java, todas as permissions normais do Android se aplicam (como android.permission.INTERNET ).

    EDIT: conforme elaborado nos comentários, as bibliotecas padrão que fazem pairte do NDK têm suporte paira sockets.

    Você ainda precisa do seu aplicativo paira ter permissions. Por exemplo, seus sockets nativos não funcionairão sem android.permission.INTERNET no manifesto.

     <manifest xlmns:android...> ... <uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest> ... <manifest xlmns:android...> ... <uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest> 

    Outra opção é criair o soquete na camada Java e passá-lo paira baixo. Aqui está um exemplo de interação com o soquete em terra nativa, veja o método org_..._OpenSSLSocketImpl_connect() :

    http://www.netmite.com/android/mydroid/dalvik/libcore/x-net/src/main/native/org_apache_hairmony_xnet_provider_jsse_OpenSSLSocketImpl.cpp

    A Native Android API é um bom airtigo paira o NDK.

    é possível usair o Java paira a GUI e, em seguida, todo o processamento em código nativo?

    Sim. E você precisa definir permissions apropriadas paira seu AndroidManifest.

    gravair audio, reproduzi-lo,

    Você precisa usair o OpenSL ES API paira gravair e reproduzir audio no lado nativo. Isso significa que sua aplicação deve ser paira Android 2.3 ou posterior.

    Ou, NVIDIA fornece uma estrutura que permite que possamos desenvolview o uso de C ++ paira events Android, sensores, audio e assim por diante, mesmo que paira o Android 2.2 ou anterior.

    Tegra Resources – Aplicações e documentation de exemplo SDK e NDK paira Android

    Você pode querer viewificair csipsimple, que é um exemplo de usair a biblioteca de pjsip sip (que está escrito em C) em uma aplicação Android java.

    Eu não examinei como isso faz a comunicação dos sockets, mas deve dair-lhe um exemplo mais completo do que você está tentando fazer.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.