计算机领域中,总是需要对用到的东西进行抽象,从代码角度讲,把每个行为抽象一个个方法。通过从上层调用到底层对应的一个个方法,从而操作某个硬件,比如摄像头开,摄像头关闭,比如打印log信息,读取log信息。如此种种,就是对某个事物的计算机抽象。玩过单片机的同学可能清楚,控制跑马灯的亮灭其实是通过异或等让其亮起来,其背后其实涉及电子电路或模拟电路,但离不开01二进制。那么打开摄像头这个操作是怎么做到的呢?首先Java应用层某个时间发生打开摄像头,经过JNI层、调用硬件抽象层的openCamera,继而调用内核空间的驱动,完成摄像头的打开。如下图即为一个HAL层的作用。
![18582563-89c8c5f41315b255.png](https://i-blog.csdnimg.cn/blog_migrate/81b8cfde1ef2863c2c2b43cb6b85e406.png)