ImageViewで撮影した写真の日付を表示したいのですが、girdviewに写真があるとしましょう。クリックすると、他のアクティビティに移動し、画像のフルサイズが表示されます。今、その活動では、それが取られた日付を表示する必要があります。何か案は?
3 に答える
Androidでこれを行うには2つの方法があります。最初は次のように達成できるファイル変更日です:
String pathToFile = "Your file path";
File file = new File(pathToFile);
if(file.exists()) {
long date = file.lastModified();
/* Do your modified date stuff here */
}
もう1つの方法は、画像のEXIFデータをチェックして、その情報が利用可能な場合に写真が撮影された日付を取得することです。
ExifInterface intf = null;
try {
intf = new ExifInterface(path);
} catch(IOException e) {
e.printStackTrace();
}
if(intf == null) {
/* File doesn't exist or isn't an image */
}
String dateString = intf.getAttribute(ExifInterface.TAG_DATETIME);
/* Do your date/time stuff here */
注意点として、画像のExifデータには日付が含まれていない場合があります。ほとんどの電話カメラと商用カメラは日付/時刻のExifエントリを追加しますが、コンピューターで作成された画像にはExifデータが含まれる可能性が低くなります。また、Exifの日付/時刻はあまり適切にフォーマットされていません。Exifの日付/時刻文字列の例: 2012:06:02 14:33:46
(NexusSで撮影した画像から取得)
単に各画像を外部ストレージから読み取る場合はFile
、ファイルの変更日を取得するためにFile
呼び出されるメソッドがあります。lastModified()
これは必ずしもファイルが作成された日付ではありませんが、画像のような不変のファイルの場合はおそらくそうです。
for (File file : files) {
//This is the date the file was modified/created
long date = file.lastModified();
//You can even convert it to a Date if you want
Date fileData = new Date(date);
}
アプリケーションが外部ストレージにイメージを作成するアプリケーションであり、ファイルの最初の作成日のみが絶対に必要な場合は、イメージの作成時にその情報をローカルデータベースに自分で保存することをお勧めします。これはMediaStore
、フレームワークに対して行うことです。
を使用して、との両方を日付とRelativeLayout
組み合わせることができます。この回答を確認してください。ImageView
TextView