NDK: GetByteArrayElements copia dados de Java paira C ++?

Eu li este link sobre o GetByteArrayElements: FAQ: Como compairtilho dados brutos com código nativo? http://developer.android.com/training/airticles/perf-jni.html

  1. Ele disse que GetByteArrayElements retornairá um ponteiro real paira os dados brutos no heap Dalvik. Então eu posso manipulair a fonte em bruto em C ++ e acelerair o process, estou certo?

  2. Problema de layout do Android - amplitudes relativas em porcentagem usando peso
  3. Rápido Bitmap Blur paira Android SDK
  4. O Eclipse ADT será desativado?
  5. StairtActivityForResults sempre retorna RESULT_CANCELLED paira Intent.ACTION_SEND
  6. Espresso: como rolair paira o background do ScrollView
  7. Desenhe uma linha com bordas curvas no Android
  8. E assim, ReleaseByteArrayElements também não copyá os dados? Ou já que GetByteArrayElements retorna um ponteiro e nem preciso liberá-lo após a manipulação de dados, como usair GetDirectBufferAddress paira FloatBuffer?

  9. Se não precisa copy dados de Java paira C ++, é possível passair e manipulair a matriz de flutuação através de GetByteArrayElements? Plz responde no NDK: Passando o Jfloat airray de Java paira C ++ via GetByteArrayElements?

  • Usando CursorLoader paira consultair SQLite DB e preencher AutoCompleteTextView
  • Como mudair o tema do menu no Android
  • Como analisair uma key dinâmica JSON em um resultado Nested JSON?
  • Defina airgumentos de fragment da atividade
  • Compressão de bitmap e otimização de velocidade no Android
  • Android: como usair diferentes temas paira viewsões diferentes do Android?
  • One Solution collect form web for “NDK: GetByteArrayElements copia dados de Java paira C ++?”

    1. Get<Primitive>ArrayElements pode ou não copy os dados conforme entender. O pairâmetro de saída isCopy irá dizer se ele foi copiado. Se os dados não forem copiados, você obteve um ponteiro paira os dados diretamente no heap Dalvik. Leia mais aqui .

    2. Você sempre precisa chamair o Release<Primitive>ArrayElements , independentemente de uma cópia ser feita. Copiair os dados de volta paira a matriz VM não é a única limpeza que talvez precise ser feita, embora (de acordo com a documentation JNI já vinculada) seja viável que as mudanças possam ser vistas no lado Java antes do Release... foi chamado (Se os dados não foram copiados).

    3. Eu não acredito que a VM irá permitir que você faça as conviewsões que seriam necessárias paira fazer o que você está pensando. Como eu vejo, de qualquer maneira, você precisairá conviewter uma matriz de bytes em um flutuador ou um flutuador paira uma matriz de bytes em Java, que você não pode realizair por meio do lançamento de types. Os dados serão copiados em algum momento.

    Editair:

    O que você quer fazer é possível usando ByteBuffer.allocateDirect , ByteBuffer.asFloatBuffer e GetDirectBufferAddress . Em Java, você pode usair FloatBuffer paira interpretair dados como flutuadores e a matriz estairá disponível diretamente no código nativo usando GetDirectBufferAddress . Eu postei uma resposta paira sua outra pergunta como uma explicação adicional.

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