unfortunately (at least for what you want) you will not be able to log all packets without changes in your hardware and network architecture.
unlike older networks that functioned on a shared bus or used multiport repeaters (hubs) modern switched networks do not generally send traffic out any switch port that does not connect to the destination MAC address requested. the exceptions to this rule are broadcast traffic at the MAC and IP layers, often used by device and service discovery protocols.
to achieve your end, you would need to put the switch to operate in promiscuous mode on the port connecting to your linux box, so that all traffic on the switch is visible to your tcpdump process.
most of the time, the best way to do this is to purchase a switch that supports port mirroring, and set it to send all traffic to a second nic on your linux box.
if you wish to persue this option, look into these instructions for preparing your network for SNORT http://www.symantec.com/connect/articles/complete-snort-based-ids-architecture-part-one
note, if you can isolate a single protocol you wish to monitor, you may be able to set up a proxy for it on your linux box, configure the android device to use it, and then capture the traffic as its being passed on, since it now passes through your linux box.
not sure about the last bit of your question. all packets use the network and data-link layer, and TCPdump can log l2 protocols like ARP, and non-IP protocols at l3 (ICMP), so yes and no, i guess?