我想修改Android OS(AOSP的官方图片),为正常的电话回放声音添加预处理功能.
我已经为app音频播放实现了这种过滤(通过修改HAL和audioflinger).
我只针对特定设备(Nexus 5X).另外,我只需要过滤播放 - 我不关心录制(上行链路).
更新#1:
为了说清楚 - 我可以修改特定于Qualcomm的驱动程序,或者在Nexus 5X上运行的任何部分,并且可以帮助我修改通话中的播放.
更新#2:
我正在尝试创建一个Java层应用程序,将手机播放实时路由到音乐流.
我已经成功地安装它作为系统的应用程序,获得权限初始化AudioRecord用AudioSource.VOICE_DOWNLINK.但是,录音会给出空白样本; 它不记录语音通话.
这是我的工作线程中的代码:
// Start recording
int recBufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, 44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, recBufferSize);
// Start playback
int playBufferSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, playBufferSize, AudioTrack.MODE_STREAM);
mRecord.startRecording();;
mTrack.play();
int bufSize = 1024;
short[] buffer = new short[bufSize];
int res;
while (!interrupted())
{
// Pull recording buffers …Run Code Online (Sandbox Code Playgroud) 我想知道如何从Android应用程序获得root权限?Android市场上有没有应用程序?
我尝试了下面的代码行列出文件但没有发生任何事情
Process process = Runtime.getRuntime().exec(new String[] { "su", "-", "root"});
Run Code Online (Sandbox Code Playgroud)
我试图在我的清单文件中给出TEST_FACTORY权限,但我收到错误"允许系统应用程序"
如何制作我的应用系统应用?
我想要帮助开始使用这些东西(如果可能的话,让应用程序获得root权限)对此非常感谢.提前致谢 :)
我需要使用dvb-t驱动程序编译自定义内核作为_rkm mk602_带有rk3066处理器的android设备上的内核模块.
我已经下载了这个处理器的内核源代码,但是我无法从头开始为这个设备配置内核.有没有办法从设备中提取当前的内核配置文件?那么我只能在menuconfig中修改我需要的内容,其他内容已经正确配置.
或者,如果我只编译所需的内核模块,我怎么知道我应该使用哪个工具链来与运行的内核兼容.
我正在使用Wifi Direct和Wifi构建一个Android设备网格.
我的基本方案如下:
1)每个节点使用该WifiP2pManager.createGroup()方法构建Wifi直接组所有者(GO)接入点.然后它通过它做广告WifiP2pManager.addLocalService().
2)每个节点还扫描其他节点WifiP2pManager.discoverServices().当它发现另一个节点连接到一个使用常规的传统的无线上网节点: wifiManager.disconnect(),wifiManager.enableNetwork(),和wifiManager.reconnect().
3)更新路由表和ipTables以允许流量转发到正确的目的地.这需要root权限.
此技术的问题在于WifiP2p为每个组所有者分配相同的地址,192.168.49.1并使用192.168.49.0/24DHCP中的池向加入组所有者的设备发出地址. 因此,网格将无法在多跳上路由流量,因为所有链路都具有相同的IP空间. 已经提出了一些技术来克服网络之间的这种切换(使用存储转发移动包),使用IP广播一次通过多个链路发送,以及修改WifiP2p以发布不同的地址.我正在研究修改WifiP2p实现的最后一个选项.
什么库将IP块分配给192.168.49.1Android中的Wifi Direct Group Owner?
在Android 4.0中,它直接在WifiP2pService.java第155和156行分配:
155 | private static final String[] DHCP_RANGE = {"192.168.49.2", "192.168.49.254"};
156 | private static final String SERVER_ADDRESS = "192.168.49.1";
Run Code Online (Sandbox Code Playgroud)
从Android 5.0开始,该库已被弃用.我已经跟踪了当前的实现,直到它离开Java并开始执行C库. 这是我需要你的帮助来了解要查看哪个C库的地方.
免责声明:据我所知,我将在自定义内核领域工作并使用root设备.我已经根据我的测试床设备了解并了解风险.我也明白Android不是为了做到这一点而构建的.我也知道Wifi 802.11s引入了网状网络(未编入Android).我确实希望使用Wifi Direct(副蓝牙等),因为它充分利用了wifi基础设施模式的许多优点(节能,加密等).汉斯在这里提出了一个非常相似的问题,但并不想根植设备,我希望能够使设备生根.
type=1400 audit(506975.539:15): avc: denied { read write } for pid=5920 comm="print" name="prn0" dev="tmpfs" ino=1600 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=0
在 Android 内核中遇到此问题。
如何解决这个问题。有没有人可以帮忙。
我在哪里可以获得Android 4.0(Ice Cream Sandwich)内核源代码?
虽然这可能是一些人之前提出过的愚蠢问题,但我似乎无法在任何地方找到合适的答案,因为:
谷歌决定是非常有用的和重定向android.kernel.org到http://source.android.com/source/downloading.html,其中包括Android系统的每一个部分从内核分开.我不明白这背后的逻辑.
git clone https://android.googlesource.com/kernel/common.git做一些奇怪的事情并创建一个巨大的(600 MB +) .git文件夹而不创建源树.关于git repo,我没有给出两个问题,我只需要源代码树.
GitHub上的所有内核分支都非常过时.
最初android os在28秒内启动.我已经将它减少到19秒,删除了启动延迟,启动动画和禁用类的预加载.我想在10秒内启动操作系统.请建议我一些提示内核级别或u-boot级别来实现此目的.提前致谢.
相当长一段时间以来,我一直在尝试调试我的设备在玩大型游戏时出现的重大滞后/卡顿现象。在对我的 logcat 进行了大量分析之后,我觉得我已经确定了导致难以忍受的延迟峰值的原因。每当出现滞后峰值时,logcat 中就会始终显示以下错误:
E/lowmemorykiller:
Error opening /dev/memcg/apps/uid_99032/pid_5430/memory.soft_limit_in_bytes; errno=2
Run Code Online (Sandbox Code Playgroud)
它反复出现,就好像它一遍又一遍地试图杀死它一样。UID 和 PID 有时会有所不同。据推测,主线程每次试图杀死它但未能成功时都会挂起很短的时间。为什么会发生这种情况?
下面的错误也重复出现,混合在上述错误的出现中。这可能与问题有关:
E/ANDR-PERF-RESOURCEQS: Failed to apply optimization [4,0]
Run Code Online (Sandbox Code Playgroud)
有时它会[2,0]代替[4,0]. 这些消息在我的 logcat 中显示得确实过多。
检查我的活动进程后,提到的 UID 和 PID 始终与Android System Webview. 我通过转到“设置”中的“开发人员选项”中的“运行进程”找到了这些进程的源应用程序。在那里,正在运行的进程被列为com.google.android.webview:sandboxed_process0,并且对于每个可能具有正在运行的 Web 视图的应用程序来说,它有多个实例。通过检查该进程的信息,可以得知哪个包启动了它。因此,它们源自我手机上的各种应用程序,有时甚至是我正在玩的游戏本身。因此,这似乎是内核的 lowmemorykiller (LMK) 模块的问题,比我安装的任何特定应用程序更有可能出现问题。
任何人都知道导致此问题的原因、错误的真正含义、如何修复或解决它、为什么 LMK 无法杀死 webviews,或者到底发生了什么?我至少正在寻找一种方法来控制 LMK 忽略尝试杀死 webview,以防止它在失败时挂起主线程,或者强制它成功杀死它们。
由于某种原因,我在 Kernel Adiutor 中没有修改 LMK 参数的部分。我的手机正试图(大概)杀死这些网页视图,尽管仍然有大量可用的可用 RAM,但min_freeKernel Adiutor 中的参数远不及我当时剩余的可用 RAM 量,所以有些事情正在发生在。
我一度怀疑这可能是由于我的手机上安装的应用程序数量过多(800-900)造成的。我已将其降低到约 600 个应用程序,但问题仍然存在。我认为拥有太多应用程序不再是问题,尽管它肯定可能是。
我正在运行官方 ResurrectionRemix 8.1 ROM,并使用 ROM 的默认内核和固件。这个问题出现在非官方 RR LuisROM 上,甚至在我完全擦除/干净刷新到我当前使用的官方 RR …
我正在尝试学习内核定制,为此我的目标是 OnePlus 6T 设备。我可以通过以下步骤在 Ubuntu 18 上编译内核源代码:
\n\n以下是编译的最后几行:
\n\nCC drivers/media/platform/msm/broadcast/tspp.mod.o\nCC drivers/media/platform/msm/dvb/adapter/mpq-adapter.mod.o\nCC drivers/media/platform/msm/dvb/demux/mpq-dmx-hw-plugin.mod.o\nGZIP arch/arm64/boot/Image.gz\nCC drivers/soc/qcom/llcc_perfmon.mod.o\nCC drivers/video/backlight/lcd.mod.o\nCC net/bridge/br_netfilter.mod.o\nLD [M] drivers/char/rdbg.ko\nLD [M] drivers/media/platform/msm/broadcast/tspp.ko\nLD [M] drivers/media/platform/msm/dvb/adapter/mpq-adapter.ko\nLD [M] drivers/media/platform/msm/dvb/demux/mpq-dmx-hw-plugin.ko\nLD [M] drivers/soc/qcom/llcc_perfmon.ko\nLD [M] drivers/video/backlight/lcd.ko\nLD [M] net/bridge/br_netfilter.ko\nCAT …Run Code Online (Sandbox Code Playgroud) 背景:我正在使用 Pixel 4,build QQ2A.200501.001.B2,它是 Android 10。当我从官方源构建内核并刷新它时,触摸屏、WLAN 和其他功能不起作用。我追踪到这个事实是内核模块/vendor/lib/modules没有更新,因此新内核无法加载它们中的任何一个。我尝试仅刷新boot.img整个 AOSP,同样的问题,它们没有更新。我可以通过手动将我构建的内核模块推送到设备并按insmod正确的顺序手动加载它们来解决此问题。
所以我的问题是:
当然必须有一种“官方”方式来做到这一点?内核模块通常是如何部署的?
一些注意事项:
我无法将它们推送到/vendor/lib/modules,因为我无法重新/vendor挂载可写:
flame:/ # mount -o rw,remount /vendor
'/dev/block/dm-5' is read-only
Run Code Online (Sandbox Code Playgroud)
禁用dm-verity似乎没有帮助。
我注意到 AOSP 源包含 中的所有模块/vendor/lib/modules,位于它采用内核映像形式的同一位置(在我的例子中是device/google/coral-kernel)。因此,很自然地,我尝试用我构建的模块替换那里的模块,但是在构建和刷新之后,我发现其中/vendor/lib/modules仍然包含旧模块。
AOSP 文档说不再boot.img包含 ramdisk,它现在位于system分区中。另外,OverlayFS如果我没读错的话,应该使用“供应商覆盖”来更新那里的文件。但是,在我的设备上,没有product/vendor_overlay像文档所说的那样的目录,只有product/overlay/. 我也不确定这是否是解决这个问题的正确方法,或者我将如何在我的情况下创建这样的覆盖。
谢谢
android kernel-module linux-kernel android-source android-kernel
android-kernel ×10
android ×9
linux-kernel ×3
kernel ×2
linux ×2
alsa ×1
android-rom ×1
boot ×1
embedded ×1
jailbreak ×1
mesh-network ×1
optimization ×1
process ×1
root ×1
ubuntu-18.04 ×1
webview ×1
wifi-direct ×1