//
// _/_/_/ _/ _/_/_/_/_/
// _/ _/_/ _/_/ _/ _/ _/ _/_/ _/_/
// _/ _/_/ _/_/_/_/ _/_/_/_/ _/_/ _/ _/ _/ _/ _/
// _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
// _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/_/_/_/ _/_/ _/_/
//
//
// Copyright (c) 2015-2016, Geek Zoo Studio
// http://www.geek-zoo.com
//
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//
package com.BeeFramework.activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.AdapterView;
import android.widget.TextView;
import com.BeeFramework.AppConst;
import com.BeeFramework.adapter.CrashLogAdapter;
import com.BeeFramework.protocol.CrashMessage;
import com.external.maxwin.view.XListView;
import com.insthub.O2OMobile.R;
import org.apache.http.util.EncodingUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class CrashLogActivity extends BaseActivity
{
ArrayList<File> logFilesList = new ArrayList<File>();
ArrayList<CrashMessage> crashMessageArrayList = new ArrayList<CrashMessage>();
XListView logListView;
TextView titleTextView;
CrashLogAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.crash_log_activity);
logListView = (XListView)findViewById(R.id.log_list_view);
titleTextView = (TextView)findViewById(R.id.navigationbar_title);
titleTextView.setText("崩溃日志分析");
new Thread() {
@Override
public void run() {
initLog();
}
}.start();
logListView.setPullLoadEnable(false);
logListView.setPullRefreshEnable(false);
logListView.setRefreshTime();
listAdapter = new CrashLogAdapter(this,crashMessageArrayList);
logListView.setAdapter(listAdapter);
logListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
int size =crashMessageArrayList.size();
CrashMessage crashMessage = crashMessageArrayList.get(size-position);
Intent it = new Intent(CrashLogActivity.this, CrashLogDetailActivity.class);
it.putExtra("crash_time",crashMessage.crashTime);
it.putExtra("crash_content",crashMessage.crashContent);
startActivity(it);
}
});
}
public void initLog()
{
try
{
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + AppConst.LOG_DIR_PATH;
getFiles(logFilesList, path);
for (int i = 0; i < logFilesList.size(); i++)
{
File file = logFilesList.get(i);
try
{
FileInputStream fin = new FileInputStream(file);
int length = fin.available();
byte[] buffer = new byte[length];
fin.read(buffer);
String content = EncodingUtils.getString(buffer,"UTF-8");
fin.close();
String fileName = file.getName();
String[] nameArray = fileName.split("\\.");
if (nameArray.length > 0)
{
String intStr = nameArray[0];
long timestamp = Long.parseLong(intStr);
Date currentTime = new Date(timestamp);
CrashMessage crashMessage = new CrashMessage();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String dateString = formatter.format(currentTime);
crashMessage.crashTime = dateString;
crashMessage.crashContent = content;
crashMessageArrayList.add(crashMessage);
}
}
catch (FileNotFoundException e)
{
}
catch (IOException e2)
{
e2.printStackTrace();
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
handler.sendEmptyMessage(0);
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what)
{
case 0:
listAdapter.notifyDataSetChanged();
break;
}
}
};
private void getFiles(ArrayList<File> logFilesList, String path)
{
File[] allFiles = new File(path).listFiles();
for (int i = 0; i < allFiles.length; i++)
{
File file = allFiles[i];
if (file.isFile()&&file.getName().contains("txt"))
{
logFilesList.add(file);
}
}
}
@Override
protected void onResume()
{
super.onResume();
listAdapter.notifyDataSetChanged();
}
}