常用命令操作

1.日期格式转换:

date -d '1970-01-01 UTC 1514783294 seconds' +"%Y-%m-%d %T %z"

2.so转换成代码行数:
addr2line -C -e **.so  -f 0001e91b

3.android studio 下载地址:

https://developer.android.google.cn/studio/

4.

AS升级后,发现原来的代码会生成报出一个:App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW的warning

解决办法:

在app的bulid.gradle 文件中增加下面几行代码来关闭检索的功能。

defaultConfig {

///////////。。。。。。。。。。。。。。。。///////

}

//xucancheng add line begin 

lintOptions {

disable 'GoogleAppIndexingWarning'

baseline file("lint-baseline.xml")

}

//xucancheng add line end

重新编译后问题解决。

5.得到屏幕的大小:

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Point point = new Point(); display.getRealSize(point);

point.x 和point.y便是屏幕实际的宽度和高度。

  display.getWidth();//显示的宽度

display.getHeight();//显示的高度

6.常用log关键字:

1,亮灭屏
DisplayManagerService: Display device changed state: "内置屏幕", OFF

DisplayManagerService: Display device changed state: "内置屏幕", ON

2,powermanager接收到power键灭屏:

PowerManagerService: Going to sleep due to power button

3,windowmanager接收到全局按键

WindowManager: interceptKeyTq keycode=26 interactive=false keyguardActive=true policyFlags=2000000

WindowManager: interceptKeyTq keycode=26 interactive=false keyguardActive=true policyFlags=2000000 down =true  // 按下

WindowManager: interceptKeyTq keycode=26 interactive=true keyguardActive=false policyFlags=22000000

WindowManager: interceptKeyTq keycode=26 interactive=true keyguardActive=false policyFlags=22000000 down =false // 松开

4.camera service

1,
既然Camera是利用binder通信,它肯定要将它的service注册到ServiceManager里面,
以备后续Client引用,那么这一步是在哪里进行的呢?细心的人会发现,
在frameworks\base\media\mediaserver\Main_MediaServer.cpp下有个main函数,
可以用来注册媒体服务。没错就是在这里,CameraService完成了服务的注册
Main_MediaServer主函数由init.rc在启动是调用,所以在设备开机的时候Camera就会注册一个服务,用作binder通信

2,camera 在servicemanager 完成服务注册,提供给client随时使用。


sp Camera::connect(int cameraId)
{
    LOGV("connect");
    sp c = new Camera();
    const sp& cs = getCameraService();
    if (cs != 0) {
        c->mCamera = cs->connect(c, cameraId);
    }
    if (c->mCamera != 0) {
        c->mCamera->asBinder()->linkToDeath(c);
        c->mStatus = NO_ERROR;
    } else {
        c.clear();
    }
    return c;
}
通过getCameraService()函数获取一个Camera服务实例。

const sp& Camera::getCameraService()
{
    if (mCameraService.get() == 0) {
        sp sm = defaultServiceManager();
        sp binder;
        do {
            binder = sm->getService(String16("media.camera"));
            if (binder != 0)
                break;
            LOGW("CameraService not published, waiting...");
            usleep(500000); // 0.5 s
        } while(true);
  

        mCameraService = interface_cast(binder);
    }
    LOGE_IF(mCameraService==0, "no CameraService!?");
    return mCameraService;
}
 

这个调用用来得到一个名称为"media.camera" 的服务,这个调用返回值的类型为IBinder,根据实现将其转换成类型ICameraService使用

7.查看进程的方法

ps -A |grep camera

ps  -ef|grep camera

ps -ef 是用标准的格式显示进程的、其格式如下

其中各列的内容意思如下

UID //用户ID、但输出的是用户名 
PID //进程的ID 
PPID //父进程ID 
C //进程占用CPU的百分比 
STIME //进程启动到现在的时间 
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD //命令的名称和参数

8.杀死进程

kill -Signal pid

默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理

猜你喜欢

转载自blog.csdn.net/chaosxcc/article/details/83038436
今日推荐