6ebb4f04da
Added live FTP download of images while flying, added auto report by mail with these images as attachement while flying (for imidiet reporting) Added more mavlink support, and improved mission handling... Uppgraded to 4.16.1 DJI SDK Latest code not tested ... have funn.
113 linhas
3.5 KiB
Java
113 linhas
3.5 KiB
Java
// Does not work...
|
|
|
|
package sq.rogue.rosettadrone.settings;
|
|
|
|
//import android.se.omapi.Session;
|
|
|
|
import android.util.Log;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.net.PasswordAuthentication;
|
|
import java.security.Security;
|
|
import java.util.Properties;
|
|
|
|
import javax.activation.DataHandler;
|
|
import javax.activation.DataSource;
|
|
import javax.mail.Message;
|
|
import javax.mail.Session;
|
|
import javax.mail.Transport;
|
|
import javax.mail.internet.InternetAddress;
|
|
import javax.mail.internet.MimeMessage;
|
|
|
|
public class GMailSender extends javax.mail.Authenticator {
|
|
private String mailhost = "smtp.gmail.com";
|
|
private String user;
|
|
private String password;
|
|
private Session session;
|
|
|
|
static {
|
|
java.security.Security.addProvider(new JSSEProvider());
|
|
}
|
|
|
|
public GMailSender(String user, String password) {
|
|
this.user = user;
|
|
this.password = password;
|
|
|
|
Properties props = new Properties();
|
|
props.setProperty("mail.transport.protocol", "smtp");
|
|
props.setProperty("mail.host", mailhost);
|
|
props.put("mail.smtp.auth", "true");
|
|
props.put("mail.smtp.port", "465");
|
|
props.put("mail.smtp.socketFactory.port", "465");
|
|
props.put("mail.smtp.socketFactory.class",
|
|
"javax.net.ssl.SSLSocketFactory");
|
|
props.put("mail.smtp.socketFactory.fallback", "false");
|
|
props.setProperty("mail.smtp.quitwait", "false");
|
|
|
|
session = Session.getDefaultInstance(props, this);
|
|
}
|
|
|
|
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
|
|
return new javax.mail.PasswordAuthentication(user, password);
|
|
}
|
|
|
|
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
|
|
try{
|
|
MimeMessage message = new MimeMessage(session);
|
|
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
|
|
message.setSender(new InternetAddress(sender));
|
|
message.setSubject(subject);
|
|
message.setDataHandler(handler);
|
|
if (recipients.indexOf(',') > 0)
|
|
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
|
|
else
|
|
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
|
|
Transport.send(message);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
Log.d("TEST","Error: "+ e.toString());
|
|
}
|
|
}
|
|
|
|
public class ByteArrayDataSource implements DataSource {
|
|
private byte[] data;
|
|
private String type;
|
|
|
|
public ByteArrayDataSource(byte[] data, String type) {
|
|
super();
|
|
this.data = data;
|
|
this.type = type;
|
|
}
|
|
|
|
public ByteArrayDataSource(byte[] data) {
|
|
super();
|
|
this.data = data;
|
|
}
|
|
|
|
public void setType(String type) {
|
|
this.type = type;
|
|
}
|
|
|
|
public String getContentType() {
|
|
if (type == null)
|
|
return "application/octet-stream";
|
|
else
|
|
return type;
|
|
}
|
|
|
|
public InputStream getInputStream() throws IOException {
|
|
return new ByteArrayInputStream(data);
|
|
}
|
|
|
|
public String getName() {
|
|
return "ByteArrayDataSource";
|
|
}
|
|
|
|
public OutputStream getOutputStream() throws IOException {
|
|
throw new IOException("Not Supported");
|
|
}
|
|
}
|
|
} |