ADF Mobile : Device Interaction API – Pictures, GPS and Email With Attachments

Luc Bors 4
0 0
Read Time:2 Minute, 55 Second

During the AMIS ADF Masterclass I showed how to take a picture from within an ADF Mobile application, attach it to an Email and send that email out to several recipients. To top it of, I even added the GPS coordinates to the subject, so you know where the picture was taken. And all of that with the push of one single button. Sounds complicated ? Well actually it is very simple.

There are two ways to interact with device services. One is by using the page Definition, the second is by using the API.
I decided not to use the pageDef, but to invoke the device datacontrol from java by using the API. Then it is also possible to invoke multiple actions in one java method. In this case I take a picture, get the coordinates and send an email.

How to take a picture ?
Taking a picture is easy. Just call the getPicture() method, and make sure (for this use case) to set Destination Type to File.

public String getPicture(){
//destinationType = 1 so that the image is returned as a filename

String theImage = DeviceManagerFactory.getDeviceManager().getPicture(
, false
return theImage;

That takes care of taking the picture.

How to get the current coordinates ?
By invoking getCurrentPosition it is very easy to get the GPS coordinates. Simply call the getCurrentPosition() method, and you will get the current coordinates. The coordinates are refreshed every 60 seconds.

public Location getPosition(){
Location currentPosition = DeviceManagerFactory.getDeviceManager().getCurrentPosition(
, true);
return currentPosition;

How to send an email ?
First take a look at the signature of the sendEmail() method. This immediately makes clear how to proceed from here…

java.lang.String to
,java.lang.String cc
,java.lang.String subject
,java.lang.String body
,java.lang.String bcc
,java.lang.String attachments
,java.lang.String mimeTypes)

The signature explains how it works. All that is needed are Strings. If you want to use multiple recipients, you need to separate them by comma’s. The final question is: “how to attach the image that was just created ?”.

Attaching the image.
You can do two things. Either use the String that is returned by calling getPicture(), or directly attach the file from the Temporary Directory which I do in this case.

public void sendEmail(String attachment, Location here){
String directoryPathRoot = AdfmfJavaUtilities.getDirectoryPathRoot(0); //TemporaryDirectory
String content = "Amis wishes you all the best for 2013. This email contains an image as attachment. ";
content = content + "The picture was taken at: latitude=" + here.getLatitude() +
", longitude=" + here.getLongitude();
attachment = directoryPathRoot+"/Pic.png";

, null
, "Merry Xmas and a Happy new year"
, content
, bcc
, attachment
, "image/jpg");

The content and bcc in the above code sample are Strings that can be set in the method.

Putting it all together

The only thing you need is a button to invoke a method in the bean.

amx:commandButton text="Take Picture" id="cb3"

The method executeLogic() does the magic by invoking all three methods described above.

public void executeLogic(ActionEvent actionEvent) {
String att = getPicture();
Location whereAmI = getPosition();
sendEmail(att, whereAmI);

Push the button, the camera is invoked, and after that, the email client is invoked, showing an email with the attachment, the content (including GPS coordinates) and the recipients.

About Post Author

Luc Bors

Luc Bors is Expertise Lead ADF and technical specialist/architect at AMIS, Nieuwegein (The Netherlands). He developed several Workshops and training on ADF and also is an ADF and JHeadstart instructor. Luc is a member of the ADF Methodology group and publishes articles on ADF in oracle technology related magazines, on the AMIS technology blog, (
0 %
0 %
0 %
0 %
0 %
0 %

Average Rating

5 Star
4 Star
3 Star
2 Star
1 Star

4 thoughts on “ADF Mobile : Device Interaction API – Pictures, GPS and Email With Attachments

  1. Luc,

    Do you have step by step tutorial for the following:
    We wanted to create a send email form. The send email form allows us to take a picture or pictures and send along with the email. We are totally lost. Can you please help?


Comments are closed.

Next Post

ADF DVT: Visualizing valid periods using Project and Scheduling Gantt Charts

In a recent article – Advanced SQL to find valid periods – juggling with outer joins, running totals and analytical functions – I discussed how to use Analytical Functions in SQL to cleverly (!) derive the valid periods from a database table that contains periods of inclusion and exclusion. A […]
%d bloggers like this: