This article examines the Android Camera subsystem from the process/file perspective based on Android 4.2.2.
The overall architecture of the AndroidCamera subsystem is divided into two parts: Client and Server. They are built on the basis of the Android inter-process communication mechanism Binder.
WP
U0_a142126 2119 162156 31244 c0042004 4007d108 S Compiler
U0_a142127 2119 162156 31244 c0042004 4007d108 S ReferenceQueueD
U0_a142128 2119 162156 31244 c0042004 4007d108 S FinalizerDaemon
U0_a142129 2119 162156 31244 c0042004 4007d108 S FinalizerWatchd
U0_a142130 2119 162156 31244 c02b2ffc 4007bfe8 S Binder_1
U0_a142131 2119 162156 31244 c02b2ffc 4007bfe8 S Binder_2
U0_a142134 2119 162156 31244 c0042004 4007d108 S pool-1-thread-1
U0_a142136 2119 162156 31244 c00a5004 4007cee4 S CameraHolder
U0_a142152 2119 162156 31244 c02b2ffc 4007bfe8 S Binder_3
U0_a142375 2119 162156 31244 c0042004 4007d108 S SoundPool
U0_a142376 2119 162156 31244 c0042004 4007d108 S SoundPoolThread
U0_a142377 2119 162156 31244 c0042004 4007d108 S Thread-123
List binder services
Root @ android:/# service list
63media. audio_policy: [android. media. IAudioPolicyService]
64media. camera: [android. hardware. ICameraService]
65media. player: [android. media. IMediaPlayerService]
66media. audio_flinger: [android. media. IAudioFlinger]
View virtual address space of a process
Media 1012 1 37484 8740 ffffffff 4016bfe8 S/system/bin/mediaserver
Root @ android:/# cat/proc/1012/maps
401f7000-40215000r-xp 00000000 637/system/lib/libbinder. so
40215000-4021a000r -- p 0001d000 637/system/lib/libbinder. so
4021a000-4021b000rw-p 00022000 00:11 637/system/lib/libbinder. so
4025a000-4025b000r-xp 00000000 524/system/lib/libhardware. so
4025b000-4025c000r -- p 00000000 524/system/lib/libhardware. so
4025c000-4025d000rw-p 00001000 00:11 524/system/lib/libhardware. so
40451000-40467000r-xp 00000000 585/system/lib/libcamera_client.so
40467000-40468000 --- p 00000000 0
40468000-4046d000r -- p 00016000 585/system/lib/libcamera_client.so
4046d000-4046e000rw-p 0001b000 585/system/lib/libcamera_client.so
40581000-40586000r-xp 00000000 636/system/lib/libhardware_legacy.so
40586000-40587000r -- p 00004000 636/system/lib/libhardware_legacy.so
40587000-40588000rw-p 00005000 00:11 636/system/lib/libhardware_legacy.so
4059c000-405d4000r-xp 00000000 655/system/lib/libcameraservice. so
405d4000-405d8000r -- p 00037000 655/system/lib/libcameraservice. so
405d8000-405d9000rw-p 0003b000 655/system/lib/libcameraservice. so
405d9000-405dc000r-xp 00000000 582/system/lib/libcamera_metadata.so
405dc000-405dd000r -- p 00002000 582/system/lib/libcamera_metadata.so
405dd000-405de000rw-p 00003000 00:11 582/system/lib/libcamera_metadata.so
40b12000-40b1f000r-xp 00000000 569/system/lib/hw/camera. sama5d3-ek.so
40b1f000-40b20000r -- p rjc000 00:11 569/system/lib/hw/camera. sama5d3-ek.so
40b20000-40b21000rw-p g0d000 569/system/lib/hw/camera. sama5d3-ek.so
41eb5000-41eb7000r-xp 00000000 565/system/lib/hw/gralloc. sama5d3-ek.so
41eb7000-41eb8000r -- p 00001000 565/system/lib/hw/gralloc. sama5d3-ek.so
41eb8000-41eb9000rw-p 00002000 565/system/lib/hw/gralloc. sama5d3-ek.so
420000000-000026000rw-s 3f200000: 0b 554/dev/video1
U0_a142119 1010 162156 31244 ffffffff 4007cee4 S com. android. camera
Root @ android:/# cat/proc/2119/maps
40130000-4014e000r-xp 00000000 637/system/lib/libbinder. so
4014e000-40153000r -- p 0001d000 637/system/lib/libbinder. so
40153000-40154000rw-p 00022000 00:11 637/system/lib/libbinder. so
40154000-401e5000r-xp 00000000 598/system/lib/libandroid_runtime.so
401e5000-401e6000 --- p 00000000 00: 00 0
401e6000-401ea000r -- p 00091000 598/system/lib/libandroid_runtime.so
401ea000-401fw.rw-p 00095000 598/system/lib/libandroid_runtime.so
404e9000-404ff000r-xp 00000000 585/system/lib/libcamera_client.so
404ff000-40500000 --- p 00000000 0
40500000-40505000r -- p 00016000 585/system/lib/libcamera_client.so
40505000-40506000rw-p 0001b000 00:11 585/system/lib/libcamera_client.so
44cfe000-44cff000r -- s 003c4000 160/system/framework. jar
44cff000-456f2000r -- p 00000000 107/data/dalvik-cache/system @ framework@framework.jar @ classes. dex
456f2000-457b3000rw-p 00000000 1203/dev/ashmem/dalvik-aux-structure (deleted)
4939a000-493a2000r -- s 0010c000 00:11 195/system/app/LegacyCamera.apk
493a2000-493ef000r -- s 000bc000 195/system/app/LegacyCamera.apk
493ef000-493f7000r -- s 0010c000 00:11 195/system/app/LegacyCamera.apk
493f7000-49447000r -- p 00000000 485/data/dalvik-cache/system@app@LegacyCamera.apk @ classes. dex
49447000-49451_rw-p 00000000 3819/dev/ashmem/dalvik-aux-structure (deleted)