这个Demo APP只有一个Activity
,如下:
package com.example.demoapp;
import android.os.Bundle;
import android.app.Activity;
import android.car.Car;
import android.car.hardware.cabin.CarCabinManager;
import android.car.hardware.CarPropertyConfig;
import java.util.List;
public class MainActivity extends Activity {
private CarCabinManager mCarCabinManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume(){
super.onResume();
Car mCar = Car.createCar(this);
mCarCabinManager =
(CarCabinManager) mCar.getCarManager(Car.CABIN_SERVICE);
List<CarPropertyConfig> mList = mCarCabinManager.getPropertyList();
android.util.Log.d("debug_car","mCarCabinManager = :"+mCarCabinManager+",mList.size = :"+mList.size());
}
}
代码很简单,在onResume
时通过createCar
创建Car
实例,然后就可以通过其getCarManager
获取各种manager,有了manager就可以访问汽车的各种数据以及状态
Car.createCar
public static Car createCar(Context context) {
return createCar(context, (Handler) null);
}
@Nullable
public static Car createCar(Context context, @Nullable Handler handler) {
assertNonNullContext(context);
Car car = null;
IBinder service = null;
boolean started = false;
int retryCount = 0;
while (true) {
service = ServiceManager.getService(CAR_SERVICE_BINDER_SERVICE_NAME);
if (car == null) {
// service can be still null. The constructor is safe for null service.
car = new Car(context, ICar.Stub.asInterface(service),
null /*serviceConnectionListener*/, null /*statusChangeListener*/, handler);
}
if (service != null) {
if (!started) { // specialization for most common case.
// Do this to crash client when car servic