मैं आपकी क्या अपेक्षाएं हैं:
* अपने ही PictureActivity का उपयोग कर एक तस्वीर ले लो और EXIF (geotags) डेटा
* जोड़ें: का उपयोग कर SurfaceHolder.Callback
को लागू करने और Camera
लिखें/जियोटैग JPEGs (EXIF डेटा) एंड्रॉयड में
क्या काम नहीं कर रहा:
EXIF जीपीएस डेटा
मैं क्या कोशिश की है जोड़ना: ExifInterface
का उपयोग
और मैन्युअल Camera.Parameters
की स्थापना (दोनों जीपीएस मेटा डेटा स्थापित करने के लिए विशिष्ट तरीकों के साथ और params.set(String, Value)
का उपयोग करके)। (हाँ, मैं जीपीएस डेटा आयात करने के लिए फ़्लिकर निर्धारित किया है - अन्य चित्रों अच्छा काम)
मैं FlickrJ का उपयोग कर फ़्लिकर के चित्र अपलोड कर रहा हूँ, लेकिन इस उपकरण भी कहते हैं वहाँ EXIF में कोई जीपीएस डेटा है: http://regex.info/exif.cgi
मुझे क्या याद आ रही है?
(Android 2.2, एचटीसी डिजायर)
संपादित करें:
- कैमरा Geotag photos: On
पर सेट है - मैं हार्डकोडेड डमी जीपीएस पदों
यहाँ के साथ की कोशिश की है मैन्युअल रूप से स्थापित करने के मापदंडों के लिए कोड है (दोनों के साथ और पहली जीपीएस डेटा को हटाए बिना की कोशिश की, और के रूप में set(String, Value)
साथ यह भी उल्लेख किया):
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(p.getPreviewSize().width, p.getPreviewSize().height);
Log.e("PictureActivity", "EXIF: "+AGlanceLocationListener.getLatitude());
p.removeGpsData();
p.setGpsLatitude(AGlanceLocationListener.getLatitude());
p.setGpsLongitude(AGlanceLocationListener.getLongitude());
p.setGpsAltitude(AGlanceLocationListener.getAltitude());
p.setGpsTimestamp(AGlanceLocationListener.getTime());
mCamera.setParameters(p);
}
उसके
//Save EXIF location data to JPEG
ExifInterface exif;
try {
exif = new ExifInterface("/sdcard/DCIM/"+filename+".jpeg");
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
String.valueOf(AGlanceLocationListener.getLatitude()));
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,
String.valueOf(AGlanceLocationListener.getLongitude()));
exif.saveAttributes();
} catch (IOException e) {
Log.e("PictureActivity", e.getLocalizedMessage());
}
यहाँ sdcard के लिए JPEG फ़ाइल लिखने के लिए कोड है:: ई ExifInterface
उपयोग करने के लिए कोड है
Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c)
{
// Bitmap pic = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
String day = String.valueOf(Calendar.getInstance().getTime().getDay());
String hour = String.valueOf(Calendar.getInstance().getTime().getHours());
String minute = String.valueOf(Calendar.getInstance().getTime().getMinutes());
String second = String.valueOf(Calendar.getInstance().getTime().getSeconds());
filename = "Billede"+day+hour+minute+second;
try {
FileOutputStream fos = new FileOutputStream(new File("/sdcard/DCIM/"+filename+".jpeg"));
fos.write(imageData);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
if(imageData != null){
Intent mIntent = new Intent();
setResult(0,mIntent);
PictureActivity.this.showDialog(0);
}
}
};
इसके अलावा से छवि लेखन की कोशिश की एक Bitmap
(काम नहीं किया)
मूल छवियों च को देखते हुए:, प्लस एक और यहाँ सवाल का उपयोग कर एक FileOutputStream
काम किया
नकारात्मक अक्षांश के लिए और देशांतर कोड ऊपर सकारात्मक की बजाय नकारात्मक मूल्यों सांकेतिक शब्दों में बदलना होगा। उदाहरण के लिए (-40.00, -73.00) +40 डिग्री दक्षिण की बजाय दक्षिण -40 डिग्री अक्षांश दक्षिण के रूप में एन्कोड किया जाएगा। -73 को +73 डिग्री रेखांश पश्चिम की बजाय -73 डिग्री रेखांश पश्चिम के रूप में एन्कोड किया जाएगा)। – Theo
आम तौर पर इसे सही उत्तर नहीं माना जाना चाहिए, क्योंकि कोड त्रुटिपूर्ण है (गणित। फ्लोर इश्यू आदि ...) – seanpj