У меня есть массив с плавающей точкой в java, и я хочу преобразовать каждый элемент в его аналог байтового массива для отображения с использованием android.graphics.Bitmap и Bitmapfactory, однако эта операция, похоже, не работает, и любые мудрые слова будут весьма признательны.
package com.bitmapdisplay;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;
import android.view.Window;
public class BitmapDiplay extends Activity {
/** Called when the activity is first created. */
float[] array = {1, 6, 1, 4, 5, 0, 8, 7, 8, 6, 1,0, 5 ,6, 1,8};
float[] new_array= new float[array.length];
int[] int_array;
byte[] byte_array;
private static final int MASK = 0xff;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
for(int k = 0;k<array.length;k++)
{
new_array[k] = (float)((double)array[k]*2);
int_array[k] = Float.floatToRawIntBits(new_array[k]);
byte_array = intToByteArray(int_array[1]);
setContentView(new Panel(this));
}
}
public static byte[] intToByteArray(int param) {
byte[] result = new byte[4];
for (int i = 0; i < 4; i++) {
int offset = (result.length - 1 - i) * 8;
result[i] = (byte) ((param >>> offset) & MASK);
}
return result;
}
class Panel extends View {
public Panel(Context byteArray) {
super(byteArray);
}
@Override
public void onDraw(Canvas canvas) {
Bitmap _scratch = BitmapFactory.decodeByteArray(byte_array, 0, byte_array.length);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(_scratch, 10, 10, null);
}
}
}
Я конвертирую из одного числа с плавающей точкой в его представление в 4-битном массиве, однако для этого я сначала конвертирую его в raw int, а затем в byte []. Я не уверен, что это лучший способ. Однако в конце я надеюсь построить плавающую матрицу рассчитанных логарифмических спектральных амплитуд звуковой дорожки и отобразить матрицу в растровое изображение. Тем не менее, я застрял только на преобразование одного массива в растровое изображение. Я новичок в Android и Java. Если есть другой метод, который люди могут предложить выполнить эту задачу, это было бы здорово. Спасибо.