<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[newtonnl的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/newtonnl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; newtonnl]]></copyright><item><title><![CDATA[andriod自定义录像程序无声问题]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/159730306</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/159730306</guid><author>newtonnl</author><pubDate>Wed, 01 Apr 2026 17:06:28 +0800</pubDate><description><![CDATA[调用，将其设置为后台应用，这个是权限造成的mute，在AudioPolicyService::startInput中permitted 不等于PERMISSION_GRANTED时候，会设置setAppState_l(client, APP_STATE_IDLE)，此函数中会将录音mute，操作中直接返回true，后续录音操作是在onCreate 中updateUi函数中调用startRecord 进行录音，这样u[id].mMediaRecorder属于后台，没有放在前台操作，导致权限问题。]]></description><category></category></item><item><title><![CDATA[Android 增加宏开关控制android.bp]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/142387505</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/142387505</guid><author>newtonnl</author><pubDate>Fri, 20 Sep 2024 15:59:28 +0800</pubDate><description><![CDATA[5. 在go配置中增加multimedia_xxx_support方法，通过该方法获取deviceConfig类型的variale变量值multimedia_xxx_support。2.  在和android.bp同级目录下定义surface.go ,并且在同一级android.bp中引入xxx.go,这样当前文件夹下的cpp文件就可以识别到。宏定义通过系统属性prop管理java文件，具体宏定义需要通过go语言定义去管理c++c++，在android.bp中需要通过go语言定义协助，可以参考。]]></description><category></category></item><item><title><![CDATA[android hal层 c 堆栈打印方法]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/78097849</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/78097849</guid><author>newtonnl</author><pubDate>Tue, 26 Sep 2017 15:54:46 +0800</pubDate><description><![CDATA[比如要追踪 hardware/qcom/audio/hal/audio_hw.c 中adev_set_mode() 函数的函数堆栈调用关系
实际原理就是利用c++ callstack 库,重新编译成c库后使用即可.
 1. 在hardware/qcom/audio/hal/ 下添加 callstack.cpp 和 callstack.h文件 callstack.cpp 内容：

#incl]]></description><category></category></item><item><title><![CDATA[android调用堆栈汇总]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/78096534</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/78096534</guid><author>newtonnl</author><pubDate>Tue, 26 Sep 2017 15:42:03 +0800</pubDate><description><![CDATA[简介


下面列出的打印函数调用堆栈的方法，只会输出CallStack的信息，并不会抛出异常，也不会导致程序崩溃。

在很多情况下，我们无法通过gdb或DDD来单步调试应用，所以打印函数调用堆栈对于我们学习Android源码还是很有必要的（比如说：了解众多子类中，到底走的是哪个子类实例）。







Java代码










1

2]]></description><category></category></item><item><title><![CDATA[Android_ADB_通过WIFI或USB方式完成调试]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/76021089</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/76021089</guid><author>newtonnl</author><pubDate>Mon, 24 Jul 2017 15:25:06 +0800</pubDate><description><![CDATA[1. 用usb线将手机和PC连接起来
2. 然后在手机端执行


adb root

然后使用adb shell登陆手机, 执行如下命令:

setprop service.adb.tcp.port 5555
stop adbd &&  start adbd &


3. 然后在PC端执行


adb tcpip 5555
adb connect 192.168.*.* (手机]]></description><category></category></item><item><title><![CDATA[vim 用法大全 -葵花宝典,含泪推荐,个人最常用的]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/73910010</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/73910010</guid><author>newtonnl</author><pubDate>Thu, 29 Jun 2017 15:15:09 +0800</pubDate><description><![CDATA[用ctags -R命令做tag。临时用法可以vim打开代码，输入 “：set tags=/direct/tags，这样在代码中就可以用ctrl+]来查看原始函数定义了，ctrl+T返回。
目录下vim每个代码文件时，都需要set tags=。。。，主要是在vim ~/.vimrc中加入 set tags=/direct/tags，一劳永逸.  多个tags,set tags+=/home/...]]></description><category></category></item><item><title><![CDATA[strtok 用法总结,可以快速提取带分割符号的字符串]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/73885144</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/73885144</guid><author>newtonnl</author><pubDate>Thu, 29 Jun 2017 11:50:17 +0800</pubDate><description><![CDATA[#include  
#include  

int main(void) 
{ 
   char input[22] = "abc,d,eee,fff,ggg,hhh"; 
   char *p; 

   /* strtok places a NULL terminator 
   in front of the token, if found */ 

   p = s]]></description><category></category></item><item><title><![CDATA[windows+python+chrome遇见的问题]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/72884592</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/72884592</guid><author>newtonnl</author><pubDate>Tue, 06 Jun 2017 16:23:15 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/sean-sun/p/4335121.html


1.
'ChromeDriver executable needs to be in the path.报错处理,不在路经内



win7系统，在python中调用ChromeDriver 一直报错

“
selenium.common.exceptions.WebDrive]]></description><category></category></item><item><title><![CDATA[makefile常用函数学习(wildcard foreach filter word if ) PRODUCT_COPY_FILES]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/72781841</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/72781841</guid><author>newtonnl</author><pubDate>Sat, 27 May 2017 15:49:44 +0800</pubDate><description><![CDATA[makefile 博大精深,看到下面一段代码,当时直接就蒙圈了.if 这个用法太怪异了,好不容易找到一个手册才理解是什么意思.整理了下相关makefile的用法,附上自己测试的例子.
1.code
#####################################################
# 1 test for PRDUCT_COPY_FILE
# 2 test for ba]]></description><category></category></item><item><title><![CDATA[Python 各种运行错误（如：SyntaxError ：invalid syntax）]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/70792289</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/70792289</guid><author>newtonnl</author><pubDate>Wed, 26 Apr 2017 11:37:23 +0800</pubDate><description><![CDATA[18个新手常见Python运行时错误






想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。

1）忘记在 if , elif , else , for , while , class ,def 声明末尾添加
 ：（导致 “SyntaxError ：invalid syntax”）

该错误将发生在类似如]]></description><category></category></item><item><title><![CDATA[关于Segmentation fault (core dumped)几个简单问题]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/65632761</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/65632761</guid><author>newtonnl</author><pubDate>Fri, 24 Mar 2017 16:22:43 +0800</pubDate><description><![CDATA[有的程序可以通过编译，但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行，而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法，这就是core file。

如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:

#]]></description><category></category></item><item><title><![CDATA[应用程序调用excel 失败]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/60144700</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/60144700</guid><author>newtonnl</author><pubDate>Fri, 03 Mar 2017 18:40:16 +0800</pubDate><description><![CDATA[Opening config 'D:\work-file\ l\batchcmd_xml\BatteryInfo.xls'
ERROR: Exception occurred while parsing'D:\work-file\ l\batchcmd_xml\BatteryInfo.xls'
      Details:
 
      System.InvalidCastExcepti]]></description><category></category></item><item><title><![CDATA[Android N Preview 行为变更]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/52883771</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/52883771</guid><author>newtonnl</author><pubDate>Fri, 21 Oct 2016 15:28:54 +0800</pubDate><description><![CDATA[http://www.2cto.com/kf/201605/510744.html




行为变更


Android N 除了提供诸多新特性和功能外，还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。

如果您之前发布过 Android 应用，请注意您的应用可能受到这些平台变更的影响。
性能提升


为延长设备的电池]]></description><category></category></item><item><title><![CDATA[python合并同类型excel表格]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/52632000</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/52632000</guid><author>newtonnl</author><pubDate>Fri, 23 Sep 2016 01:01:50 +0800</pubDate><description><![CDATA[python脚本如下，验证有效，


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, csv


class CSVTopoIreator:
    def __init__(self, filename):
        self.infile = open(filename, 'rb')
        ]]></description><category></category></item><item><title><![CDATA[如何遍历需要测试的按键]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/51722791</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/51722791</guid><author>newtonnl</author><pubDate>Mon, 20 Jun 2016 19:09:50 +0800</pubDate><description><![CDATA[//1.初始化定义mkeyMap = new HashMap


//2.填充键值 mKeyMap.put(KeyCode,id);


//3.按键响应事件中 检查keycode
检查成功后删除mKeyMap.remove(keyCode);


可以通过检查mKeyMap.size()判断是否遍历所有按键


//4.循环按键方法


testactivity ]]></description><category></category></item><item><title><![CDATA[adb shell am start权限问题解决]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/51078431</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/51078431</guid><author>newtonnl</author><pubDate>Wed, 06 Apr 2016 21:03:58 +0800</pubDate><description><![CDATA[Starting: Intent { cmp=com.zui.factorymode/.ManualTestActivity }
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000
 cmp=com.zui.factorymode/.ManualTestActivity } from]]></description><category></category></item><item><title><![CDATA[workqueue 用法实例]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/50549235</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/50549235</guid><author>newtonnl</author><pubDate>Wed, 20 Jan 2016 16:16:52 +0800</pubDate><description><![CDATA[struct my_work_stuct{
    int test;
    struct work_stuct save;
};

struct my_work_stuct test_work; 
struct workqueue_struct *test_workqueue;

void do_save(struct work_struct *p_work)
{
    struct my_]]></description><category></category></item><item><title><![CDATA[换行符在不同系统中切换时修改工具]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/50427508</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/50427508</guid><author>newtonnl</author><pubDate>Tue, 29 Dec 2015 16:48:45 +0800</pubDate><description><![CDATA[主要是总结，git上传代码时会要求统一为unix方式，
首先，三种系统换行符不一样，mac  \r  CR
unix \n  lf
windosw  \r\n   crlf
ubuntu开发下主要是unix上传代码，因此要求都转化为unix格式
 
查询文件可以用file,
但是我发现xml格式的好像不能查询出来，
java,c都可以，没问题
 
dos2unix可以方便把文件]]></description><category></category></item><item><title><![CDATA[usb adb 功能配置步骤]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/49641531</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/49641531</guid><author>newtonnl</author><pubDate>Wed, 04 Nov 2015 18:11:41 +0800</pubDate><description><![CDATA[1.a80平台上adb使用的话需要注意  编译时配置/android4.4/device/softwinner/kylin-p2/kylin-p2.mkusbPRODUCT_PROPERTY_OVERRIDES += \ 
    persist.sys.usb.config=mtp,adb \ 
    ro.udisk.lable=kylin \ 
    ro.adb.secure=0默认打开]]></description><category></category></item><item><title><![CDATA[arm版本及其指令集]]></title><link>https://blog.youkuaiyun.com/newtonnl/article/details/49180177</link><guid>https://blog.youkuaiyun.com/newtonnl/article/details/49180177</guid><author>newtonnl</author><pubDate>Fri, 16 Oct 2015 16:17:47 +0800</pubDate><description><![CDATA[常常能看到ARM7，ARM9，ARM11，以及armv6k等不同的表达。且在GCC编译中，常常要用到 -march,-mcpu等。他们分别表达什么涵义呢？Sam自己也不很清楚，只是大概有个模糊的概念。今天就仔细研究一下。
 
ARM（Advanced RISCMachines）是微处理器行业的一家知名企业。设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。1985年，第一个ＡＲＭ]]></description><category></category></item></channel></rss>