android 记录本地日志(存文件)的方法

该文件存放于 /data/data/包名/files/目录下

package com.joydata.www.logger;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.util.Calendar;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class MainActivity extends AppCompatActivity {

FileOutputStream  out = null;
BufferedWriter write = null;
Calendar  calendar = null;

Lock lock = new ReentrantLock(true);  //true表示公平锁   

int year = 0;
int month = 0;
int day = 0;
int hour = 0;
int min = 0;
int sec = 0;
int msec = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log("this is test  log");
}



public void Log (String content) {

    lock.lock();

    calendar = Calendar.getInstance();

    year = calendar.get(Calendar.YEAR);
    month = calendar.get(Calendar.MONTH ) + 1;
    day = calendar.get(calendar.DAY_OF_MONTH);

    String log_file = String.format("%d-%d-%d.log",year,month,day);

    try {
        out = openFileOutput(log_file, Context.MODE_APPEND); //文件不存在则创建
        write = new BufferedWriter(new OutputStreamWriter(out));

        hour = calendar.get(Calendar.HOUR_OF_DAY); //24小时制
        min = calendar.get(Calendar.MINUTE);
        sec = calendar.get(Calendar.SECOND);
        msec = calendar.get(Calendar.MILLISECOND);

        String  str  = String.format("[%04d-%02d-%02d  %02d:%02d:%02d:%03d]    %s\n",year,month,day,hour,min,sec,msec,content);
        write.write(str);
        write.close();
        write = null;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        lock.unlock(); //解锁
    }
}

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Android Studio的TV应用中监控按键并写本地日志,您可以使用以下步骤: 1. 在XML布局中,为您的TV应用添加一个焦点监听器。例如: ```xml <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click me!" android:focusable="true" android:focusableInTouchMode="true" android:onFocusChangeListener="@{viewModel::onButtonFocusChange}" /> ``` 在这个例子中,我们将 `viewModel::onButtonFocusChange` 设置为焦点监听器。 2. 在您的VM(ViewModel)类中,实现焦点监听器方法。例如: ```java public void onButtonFocusChange(View view, boolean hasFocus) { if (hasFocus) { // 按钮获取焦点,记录日志 writeLog("Button focused."); } else { // 按钮失去焦点,记录日志 writeLog("Button unfocused."); } } ``` 3. 在您的VM类中,实现按键监听器方法。例如: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 按键被按下,记录日志 writeLog("Key down: " + keyCode); return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { // 按键被松开,记录日志 writeLog("Key up: " + keyCode); return super.onKeyUp(keyCode, event); } ``` 4. 在您的VM类中,实现日志记录方法。例如: ```java private void writeLog(String message) { try { // 获取当前时间戳 String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); // 创建日志文件 File logFile = new File(getFilesDir(), "app_log.txt"); if (!logFile.exists()) { logFile.createNewFile(); } // 写入日志 BufferedWriter writer = new BufferedWriter(new FileWriter(logFile, true)); writer.write(timeStamp + ": " + message + "\n"); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 这样,您的TV应用就可以监控按键并将日志记录在本地文件中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值