Programación de aplicaciones de Android: Relleno de una matriz bidimensional en un hilo
Estoy tratando de calibrar un acelerómetro, pero no puedo obtener los 6 valores de muestra en 6 lecturas de aceleración diferentes requeridas para la calibración. PreliminaryW es un doble [6] [3] array hecho para llenar los valores de la muestra. Es 6 por 3 porque cada lectura de aceleración tiene un componente x, y, y az.
Estoy planeando probarlos pulsando un botón en las 6 lecturas de aceleración diferentes. Este botón hace que "calibre" sea verdad.
- JsonMappingException: con el token START_ARRAY
- Convierta la matriz de cadenas 2d en ArrayList en android
- ¿Existe un Java / Android equivalente a la función iOS "componentsJoinedByString" para un NSArray?
- Cómo pasar JSONArray de la actividad a Html Script?
- ArrayAdapter: Los datos de Json se enviarán a spinner
Por supuesto, en primer lugar hacer la "calibración" verdadera para iniciar este hilo.
Por alguna razón insondable, preliminary [i] = currentAcc parece estar llenándose de 0 a i con el mismo valor en vez de i. Me aseguré de que el currentAcc es diferente cada vez que presiono el botón "calibrar".
¿Qué está mal con mi código?
public synchronized void run() { Log.d(TAG, "+ in Calibrator thread +"); int i = -1; while (calibrating) { if (calibrate) { i = i + 1; calibrate = false; preliminaryW[i] = currentAcc; if (i == 5) { calibrating = false; } } } }
- Cómo ver una matriz en logcat para android
- Parse JSON Array sin clave en Android
- ¿Por qué no podemos usar arrays en lugar de varargs?
- Cómo agregar una imagen a ImageView dinámicamente desde un array JSON
- Enviar array php con POST android
- Recuperar una matriz de parse.com y agregar los valores a una matriz local (Android)
- El método Android ArrayAdapter.Add no funciona
- ¿Cómo insertar valores en matriz bidimensional de forma programática?
No estoy muy familiarizado con el funcionamiento interno del acelerómetro, y es difícil decidir por qué no funciona sin ver más del código. Por ejemplo, ¿puede estar seguro de que sólo hay una instancia de Thread o está creando varias instancias?
¿Por qué esto necesita estar en un hilo?
Bucle como que no es una buena práctica tampoco, debe utilizar esperar / notificar si es absolutamente necesario un hilo. (más información en http://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html )
He redactado una clase que hace aproximadamente lo que quieres, pero no usa el subproceso. Puede crear un Calibrator y luego llamar a performCalibration () con cada nuevo valor:
class Calibrator{ int count = 0; double[][] preliminaryW = new double[6][3]; public void performCalibration(double[] currentAcc){ preliminaryW[count] = currentAcc; count++; } }
sin el hilo y "bucle de ocupado", puede ser capaz de omitir los indicadores para 'calibrar' y 'calibración' que sin duda ayudaría a depurar también.
¡Buena suerte!
- ¿Puedo usar Android SpeechRecognition en un Kindle Fire HD?
- FileNotFoundException para el archivo apk con HttpURLConnection en Android