package com.insthub.BeeFramework.activity;
import android.content.Intent;
import android.content.res.Resources;
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.insthub.BeeFramework.BeeFrameworkConst;
import com.insthub.BeeFramework.adapter.CrashLogAdapter;
import com.insthub.BeeFramework.protocol.CrashMessage;
import com.external.maxwin.view.XListView;
import com.insthub.ecmobile.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;
/*
* ______ ______ ______
* /\ __ \ /\ ___\ /\ ___\
* \ \ __< \ \ __\_ \ \ __\_
* \ \_____\ \ \_____\ \ \_____\
* \/_____/ \/_____/ \/_____/
*
*
* Copyright (c) 2013-2014, {Bee} open source community
* http://www.bee-framework.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.
*/
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);
Resources resource = (Resources) getBaseContext().getResources();
String log_str = resource.getString(R.string.crash_log_analysis);
titleTextView.setText(log_str);
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() + BeeFrameworkConst.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);
}
}
}
}