Ich mache eine Android-App, die die Vibration misst, wenn das Telefon auf den Boden gestellt wird. Wie verwende ich den Beschleunigungssensor (für 0-50Hz) und das Mikrofon (für 50-500Hz), um die Vibration zu messen? Ich bin neu in der Android-Entwicklung, aber das ist ein Projekt für mich. Ich weiß, dass es viele Apps im Appstore gibt, aber ich habe keine Ahnung, wie das gemacht wird. Ich suchte nach Tutorials, aber ich fand nur ein Tutorial über Shake-Gesten.Verwenden des Beschleunigungsmessers und Mikrofons des Telefons zum Messen von Vibrationen
2
A
Antwort
0
Zuerst wird ein Listener für Accelerometer implementieren:
class SENSOR_EVENT_LISTENER implements SensorEventListener {
float[] accelerometer_data = new float[3];
float[] gravity = new float[3];
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
final float alpha = 0.8f;
// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
accelerometer_data[0] = event.values[0] - gravity[0];
accelerometer_data[1] = event.values[1] - gravity[1];
accelerometer_data[2] = event.values[2] - gravity[2];
break;
default:
return;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Dann wird Ihr Empfänger registrieren:
final SensorManager sensor_manager = (SensorManager) m_context.getSystemService(Context.SENSOR_SERVICE);
listener = new SENSOR_EVENT_LISTENER();
final List<Sensor> sensors = sensor_manager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if(sensors.size() > 0) {
sensor = sensor_manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensor_manager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
}
Werte überprüfen vor Vibrationen und während der Vibration. Sie werden sehen, dass sich die Werte während der Vibration merklich ändern.
Ich bin mir nicht sicher über Mikrofon, aber zuhören Akzelerometer allein reicht aus, um Vibrationen zu messen. Ich kann meinen Code aktualisieren, wenn Sie Hilfe mit Mikrofon benötigen.
Hoffe, das hilft.
Verwandte Themen
- 1. C# -Anwendung zum Testen des Mikrofons
- 2. Grafik-Sound-Analysator des Mikrofons
- 3. Remote-Erkennung des Verbindungsstatus des Android-Telefons
- 4. Programmgesteuertes Ändern des Lautstärkepegels des Telefons (Symbian)
- 5. Können wir die Verstärkung des Mikrofons eines Android-Handys erhöhen?
- 6. So messen Sie die Neigung des Telefons in der XY-Ebene mit Beschleunigungsmesser in Android
- 7. Problem beim Erkennen der Ausrichtung des Telefons
- 8. SUMMIF mit der Ortsvorwahl des Telefons und Platzhalter * als Kriterium
- 9. Android - messen Höhe des Textes
- 10. Dienst stirbt auf Sperre des Telefons Android
- 11. Wie kann ich den Stromverbrauch des Telefons
- 12. Wie bekomme ich den vollständigen Namen des Mikrofons in C#?
- 13. Verwenden des Richtlinenbereichs zum Aktualisieren von Highcharts
- 14. Verwenden von isset zum Anzeigen des Seiteninhalts
- 15. Verwenden von PropertyInfo zum Ermitteln des Eigenschaftstyps
- 16. Verwenden von MOQ zum Testen des Controllers
- 17. Verwenden von GDB zum Überprüfen des Maschinenstapels
- 18. as3 steuern die Lautstärke des Mikrofons mit einem Schieberegler?
- 19. Verwenden von PowerShell und WMI zum Lesen des Sicherheitsprotokolls
- 20. So messen Sie CPU und Speicher während des Belastungstests
- 21. Verwenden des Formular-Kombinationsfelds zum Ändern des Servernamens der Verbindungszeichenfolge
- 22. Wie bekomme ich die UUID des Telefons in PHP?
- 23. Scan alle Wi-Fi-Geräte in der Nähe des Telefons
- 24. Verbinden des Android-Telefons mit dem lokalen Host
- 25. Möglichkeiten zum Messen des Speicherverbrauchs während der Ausführung von JUnit-Tests
- 26. android Scrollbare Hintergrundbild auf dem Bildschirm des Telefons programmgesteuert
- 27. Angular - Verwenden des gleichen Formulars zum Erstellen und Aktualisieren
- 28. Verwenden vorbereiteter Anweisungen zum Festlegen des Tabellennamens
- 29. iPhone Lokalisierung - Holen Sie sich den Sprachcode des Telefons?
- 30. Verwenden des Unterprozessmoduls zum Öffnen mehrerer Anwendungen
Können Sie auch ein Mikrofon hinzufügen? Wie kann ich die Beschleunigungsmesserdaten (x, y, z) verwenden, um die Vibrationsfrequenz zu finden? Benutze ich Fast Fourier Transform oder was? – Zik
Auf einer stabilen Oberfläche, wenn das Gerät still steht, ändern sich Beschleunigungsmesserwerte in einem kleineren Intervall und haben kleinere Spitzen. Während das Gerät vibriert, werden Sie feststellen, dass die absoluten Spitzenwerte viel höher sind. So können Sie Vibrationen erkennen. Für den Mic-Code braucht es Zeit, ihn zu implementieren. –
Ich habe geforscht und kann die Konzepte über Beschleunigungsmesser, Frequenzen und Geräuschpegel (dB) nicht wirklich verstehen. Ja, ich brauche dB und Hz. Ich muss einen Graphen machen, Y-Achse für dB und X-Achse für Hz. – Zik