X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FLogUtil.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FLogUtil.java;h=9018d9d0f8fad470acbffadc424826d2fac19ecd;hb=edf5b6603fc32ed012f765763db6fa03de3715e5;hp=2240df42812187465e8c5bdb1e063a594bb3f234;hpb=390f2fc2d835c37fb5c078fea795ae28cffc088e;p=rtmpclient.git diff --git a/app/src/main/java/ai/suanzi/rtmpclient/LogUtil.java b/app/src/main/java/ai/suanzi/rtmpclient/LogUtil.java index 2240df4..9018d9d 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/LogUtil.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/LogUtil.java @@ -10,10 +10,27 @@ import javax.mail.Transport; import javax.mail.Session; import javax.mail.internet.MimeMessage; import javax.mail.internet.InternetAddress; +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.activation.FileDataSource; +import javax.mail.BodyPart; +import javax.mail.Multipart; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMultipart; + import java.util.Date; + +import android.os.AsyncTask; import android.os.StrictMode; import java.io.File; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; +import java.io.FileOutputStream; +import java.io.FileInputStream; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; public class LogUtil { @@ -21,12 +38,14 @@ public class LogUtil { private static final String FILE_NAME = "log.txt"; private static final long MAX_SIZE = 1024 * 1024 * 10; // 10M private static String logFile = ""; + private static File DIR; public static void config(File dir) { try { final LogConfigurator logConfigurator = new LogConfigurator(); //String fname = getExternalFilesDir(null) + File.separator + "log.txt"; + DIR = dir; logFile = dir + File.separator + FILE_NAME; logConfigurator.setFileName(logFile); logConfigurator.setRootLevel(Level.DEBUG); @@ -35,102 +54,147 @@ public class LogUtil { logConfigurator.configure(); gLogger = Logger.getLogger("LogUtil"); gLogger.error("#######################################"); + gLogger.error("RtmpClient by suanzi.ai"); gLogger.debug("Log file is located at: " + logFile); } catch (Exception e){ + gLogger.error("LogUtil.config error: " + e.getMessage()); e.printStackTrace(); } - try { + } + + public static void sendLogs (){ + + AsyncTask mailTask = new AsyncTask() { + + private String zfile = DIR + File.separator + "log.zip"; - int SDK_INT = android.os.Build.VERSION.SDK_INT; - if (SDK_INT > 8) - { - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() - .permitAll().build(); - StrictMode.setThreadPolicy(policy); - //your codes here - MailUtil.sendMail(); + @Override + protected Boolean doInBackground(Void... voids) { + // zip log.txt to log.zip + String[] s = new String[1]; + s[0] = logFile; + gLogger.debug("zipLog - " + zfile); + try { + zip(s, zfile); + }catch (Exception e) { + gLogger.error("zipLog, error: " + e.getMessage()); + e.printStackTrace(); + return false; + } + sendMail(zfile); + return true; } - } catch (Exception e) { - e.printStackTrace(); - } + @Override + protected void onPostExecute(Boolean result){ + if(result) { + gLogger.debug("Zip file completed"); + File zz = new File(zfile); + zz.delete(); + } else { + gLogger.error("zip file error"); + } + } + }; + mailTask.execute(); + } -} - - -// -// -// public void sendEmail() -// { -// -// private static final int PICK_FROM_GALLERY = 101; -// int columnIndex; -// try -// { -// -// -// -// final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); -// emailIntent.setType("plain/text"); -// emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "Email" }); -// emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); -// if (URI != null) { -// emailIntent.putExtra(Intent.EXTRA_STREAM, URI); -// } -// emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is a message"); -// this.startActivity(Intent.createChooser(emailIntent,"Sending email...")); -// } -// catch (Throwable t) -// { -// Toast.makeText(this, "Request failed try again: " + t.toString(),Toast.LENGTH_LONG).show(); -// } -// } -// public void openFolder() -// { -// Intent intent = new Intent(); -// intent.setType("image/*"); -// intent.setAction(Intent.ACTION_GET_CONTENT); -// intent.putExtra("return-data", true); -// startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY); -// } -// -// public static sendLogs(){ -// -// } -// -// public void SendLoagcatMail(){ -// -// // save logcat in file -// /*File outputFile = new File(Environment.getExternalStorageDirectory(), -// "logcat.txt"); -// try { -// Runtime.getRuntime().exec( -// "logcat -f " + outputFile.getAbsolutePath()); -// } catch (IOException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// }*/ -// String fname = getExternalFilesDir(null) + File.separator + "log.txt"; -// -// File logfile = new File(fname); -// -// //send file using email -// Intent emailIntent = new Intent(Intent.ACTION_SEND); -// emailIntent.setType("vnd.android.cursor.dir/email"); -// String to[] = {"seudut@gmail.com"}; -// emailIntent.putExtra(Intent.EXTRA_EMAIL, to); -// // the attachment -// emailIntent.putExtra(Intent.EXTRA_STREAM, logfile.getAbsolutePath()); -// // the mail subject -// emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); -// startActivity(Intent.createChooser(emailIntent , "Send email...")); -// } - -//} + private static final String SMTP_SERVER = "smtp.exmail.qq.com"; + private static final String USER = "support@suanzi.ai"; + private static final String SENT_MAIL = "support@suanzi.ai"; + private static final String PASSWORD = "oqiDX8fcWa58CmNf"; + private static final String RECV_MAIL = "support@suanzi.ai"; + + private static boolean sendMail(String attachment){ + + String account = UserInfo.user; + String macAddr = UserInfo.macAddr; + StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.setThreadPolicy(policy); + + Properties props = new Properties(); + props.setProperty("mail.transport.protocol", "smtp"); + props.setProperty("mail.smtp.host", SMTP_SERVER); + props.setProperty("mail.smtp.auth", "true"); + /*final String smtpPort = "465"; + props.setProperty("mail.smtp.port", smtpPort); + props.setProperty("mail.smtp.socketFactory.class", "javax.NET.ssl.SSLSocketFactory"); + props.setProperty("mail.smtp.socketFactory.fallback", "false"); + props.setProperty("mail.smtp.socketFactory.port", smtpPort);*/ + Session session = Session.getDefaultInstance(props); + session.setDebug(true); + + MimeMessage message = new MimeMessage(session); + try { + message.setFrom(new InternetAddress(SENT_MAIL, account, "UTF-8")); + message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(RECV_MAIL, "support", "UTF-8")); + message.setSubject(macAddr, "UTF-8"); + //message.setContent("hahaha", "text/html;charset=UTF-8"); + message.setSentDate(new Date()); + + + BodyPart messageBodyPart = new MimeBodyPart(); + messageBodyPart.setText("This is message body"); + Multipart multipart = new MimeMultipart(); + multipart.addBodyPart(messageBodyPart); + messageBodyPart = new MimeBodyPart(); + DataSource source = new FileDataSource(attachment); + messageBodyPart.setDataHandler(new DataHandler(source)); + + String fname = attachment.substring(attachment.lastIndexOf("/") + 1); + messageBodyPart.setFileName(fname); + multipart.addBodyPart(messageBodyPart); + + // Send the complete message parts + message.setContent(multipart); + message.saveChanges(); + + Transport transport = session.getTransport(); + transport.connect(USER, PASSWORD); + transport.sendMessage(message, message.getAllRecipients()); + transport.close(); + } catch (Exception e){ + gLogger.error("send mail, error: " + e.getMessage()); + e.printStackTrace(); + return false; + } + return true; + } + + private static final int BUFFER_SIZE = 8192; + private static void zip(String[] files, String zipFile) throws IOException { + BufferedInputStream origin = null; + ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile))); + + try { + byte data[] = new byte[BUFFER_SIZE]; + + for (int i = 0; i < files.length; i++) { + FileInputStream fi = new FileInputStream(files[i]); + origin = new BufferedInputStream(fi, BUFFER_SIZE); + try { + ZipEntry entry = new ZipEntry(files[i].substring(files[i].lastIndexOf("/") + 1)); + out.putNextEntry(entry); + int count; + while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) { + out.write(data, 0, count); + } + } + finally { + origin.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } finally { + out.close(); + } + } +} \ No newline at end of file