2017-06-30 4 views
1

Ich habe ein kleines Problem mit verschiedenen Android-Geräten, die das Datum der Bildaufnahme in Sekunden oder Millisekunden zurückgeben. Ich verwende Intent.ACTION_PICK und verwende dann einen Content-Resolver, um das Ergebnis abzufragen.Wie kann ich feststellen, ob ein Android-Gerät Daten in Sekunden oder Millisekunden speichert?

Ich finde, dass MediaStore.Images.ImageColumns.DATE_TAKEN Spalte in Sekunden auf einem Samsung Galaxy J7 zurückgibt, aber Millisekunden auf einem Samsung Edge 7. Wie kann ich feststellen, welche ein Gerät verwendet?

+0

epoc in Millis wie folgt aussieht: 1498812669010. epoc in Sekunden wie folgt aussehen 1498812669 – eduyayo

Antwort

1

Wie Sie mit Fotos von einem Android-Gerät genommen zu tun haben, können wir davon ausgehen, dass es keine Termine vor dem Jahr 2000.

Der Zeitstempel für 2000-01-01T00:00Z ist 946.684.800 Sekunden (oder 946.684.800.000 Millisekunden). Also, wenn der Wert unter 946684800000 ist, dann können Sie davon ausgehen, dass es in Sekunden ist.

Natürlich können Sie genauer sein und statt des Jahres 2000 können Sie Termine nach dem first Android version release verwenden, oder auch ältere Versionen verwerfen und die letzten N-Versionen berücksichtigen (N kann als beliebig sein, wie Sie wollen). Hier ist der Zeitstempel für die Android-Versionen Veröffentlichungstermine (alle Termine basierend auf this link - Zeit bis Mitternacht gesetzt wurde und Offset UTC):

2008-09-23T00:00Z: 1222128000000 milliseconds 
2009-02-09T00:00Z: 1234137600000 milliseconds 
2009-04-27T00:00Z: 1240790400000 milliseconds 
2009-09-15T00:00Z: 1252972800000 milliseconds 
2009-10-26T00:00Z: 1256515200000 milliseconds 
2010-05-20T00:00Z: 1274313600000 milliseconds 
2010-12-06T00:00Z: 1291593600000 milliseconds 
2011-02-22T00:00Z: 1298332800000 milliseconds 
2011-10-18T00:00Z: 1318896000000 milliseconds 
2012-07-09T00:00Z: 1341792000000 milliseconds 
2013-10-31T00:00Z: 1383177600000 milliseconds 
2014-11-12T00:00Z: 1415750400000 milliseconds 
2015-10-23T00:00Z: 1445558400000 milliseconds 
2016-08-22T00:00Z: 1471824000000 milliseconds 
+1

Ich werde diese Methode für jetzt verwenden, danke für die Info. Ich hatte gehofft, dass es eine eingebaute Möglichkeit geben würde, es zu erkennen, wenn ein Benutzer ein Bild in der Galerie als Vorschau betrachtet, scheint es immer ein realistisches Datum zu sein, aber ist das der Fall, weil der Gerätehersteller eine Galeriefunktionalität implementiert? Nun, ich speichere die originalen Zeitstempel und zeige nur eine überprüfte Version in der Oberfläche an. Prost :) – Steve

2

Nun Millisekunden wäre 1000 mal größer. Und alle Zeitstempel auf dem Gerät sollten in den letzten Jahren relativ neu sein. Wenn also die Zahl über 10 Milliarden ist, sind es Millisekunden. Wenn es unten ist, seine Sekunden. Dieser Test wird für das nächste Jahrhundert oder so funktionieren.

Verwandte Themen