android 空调遥控器——遥控器基本版(功能全部实现)

小编接着上一篇博客接着说咱们的空调遥控器,上一篇讲了基本的发送一个指令,这次小编给大家带来了,android基于红外的空调遥控器的完整版,基本实现了对格力空调的完全控制,(源代码已经,在我的资源处给出了大家可以点击链接下载http://download.csdn.net/detail/gywuhengy/9865590)不说了 上图:
这是第一张 关闭状态:
这里写图片描述

第二张:开机
这里写图片描述

第三张:简单的切换模式 调整温度:
这里写图片描述

2.原理 ,实现已经在代码里面说的很清楚了,大家自己看一下吧(主要贴出功能代码,布局自己在源码里面看吧)

空调遥控器 主fragment

package com.gaoyu.smarttools.fragment;

import android.content.Context;
import android.graphics.Typeface;
import android.hardware.ConsumerIrManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.gaoyu.smarttools.R;
import com.gaoyu.smarttools.bean.AirBean;
import com.gaoyu.smarttools.date.CodeCommand;

import static android.content.Context.CONSUMER_IR_SERVICE;

/**
 * Created by ${高宇} on 17/6/5.
 */
//需要api大于19与下面if判断用途类似
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public class AirConditionerFragment extends Basefragment implements View.OnClickListener {
    //获取红外控制类
    private ConsumerIrManager IR;
    //判断是否有红外功能
    boolean IRBack;

    private View view;
    private TextView tempShow, airWindDir, windDirAuto, windSpeed, modeShow;
    private ImageView modeCold, modeWatted, modeAuto, modeSupply, modeHeating;
    //开关、度数、模式、自动手动、风向、风量
    private AirBean airBean = new AirBean(0, 25, 0, 0, 0, 0);


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_air, container, false);
        inItEvent();
        inItUI();
        return view;
    }


    //初始化事务
    private void inItEvent() {
        //获取ConsumerIrManager实例
        IR = (ConsumerIrManager)getActivity().getSystemService(CONSUMER_IR_SERVICE);

        //如果sdk版本大于4.4才进行是否有红外的功能(手机的android版本)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            IRBack = IR.hasIrEmitter();
            if (!IRBack) {
                showToast("对不起,该设备上没有红外功能!");
            } else {
                showToast("红外设备就绪");//可进行下一步操作
            }
        }
    }

    //初始化UI
    private void inItUI() {

        //按钮设置

        DisplayMetrics dm = getResources().getDisplayMetrics();
        int screenWidth = dm.widthPixels / 4;
        int screenHeight = dm.heightPixels / 10;
        Log.e("gaoyu", "宽高" + screenWidth + screenHeight);

        Button air_power = (Button) view.findViewById(R.id.btn_air_power);
        air_power.setOnClickListener(this);
        air_power.setWidth(screenWidth);
        air_power.setHeight(screenHeight);

        Button air_mode = (Button) view.findViewById(R.id.btn_air_mode);
        air_mode.setOnClickListener(this);
        air_mode.setWidth(screenWidth);
        air_mode.setHeight(screenHeight);


        Button air_tempadd = (Button) view.findViewById(R.id.btn_air_up);
        air_tempadd.setOnClickListener(this);
        air_tempadd.setWidth(screenWidth);
        air_tempadd.setHeight(screenHeight);

        Button air_tempsub = (Button) view.findViewById(R.id.btn_air_down);
        air_tempsub.setOnClickListener(this);
        air_tempsub.setWidth(screenWidth);
        air_tempsub.setHeight(screenHeight);

        Button air_wind_auto_dir = (Button) view.findViewById(R.id.btn_air_auto);
        air_wind_auto_dir.setOnClickListener(this);
        air_wind_auto_dir.setWidth(screenWidth);
        air_wind_auto_dir.setHeight(screenHeight);

        Button air_wind_count = (Button) view.findViewById(R.id.btn_air_count);
        air_wind_count.setOnClickListener(this);
        air_wind_count.setWidth(screenWidth);
        air_wind_count.setHeight(screenHeight);

        Button air_wind_dir = (Button) view.findViewById(R.id.btn_air_direction);
        air_wind_dir.setOnClickListener(this);
        air_wind_dir.setWidth(screenWidth);
        air_wind_dir.setHeight(screenHeight);

        //显示设置
        Context context = getContext();
        Typeface type = Typeface.createFromAsset(context.getAssets(), "fonts/lcd.TTF");
        tempShow = (TextView) view.findViewById(R.id.temp_show);
        tempShow.setTypeface(type);

        modeShow = (TextView) view.findViewById(R.id.text_mode);
        windSpeed = ((TextView) view.findViewById(R.id.text_wind_speed));
        airWindDir = ((TextView) view.findViewById(R.id.wind_dir));
        windDirAuto = ((TextView) view.findViewById(R.id.wind_dir_auto));

        modeCold = (ImageView) view.findViewById(R.id.image_cold);
        modeWatted = (ImageView) view.findViewById(R.id.image_watted);
        modeAuto = (ImageView) view.findViewById(R.id.image_auto);
        modeSupply = (ImageView) view.findViewById(R.id.image_supply);
        modeHeating = (ImageView) view.findViewById(R.id.image_heating);

    }

    /**
     * 点击处理
     *
     * @param v
     */
    @Override
    public void onClick(View v) {
        //五中模式
        int data;
        //关机状态
        if(IRBack == false){
            showToast("无红外设备!");
            return;
        }
        if (airBean.getmPower() == 0x00 && v.getId() != R.id.btn_air_power) {
            return;
        }

        switch (v.getId()) {

            case R.id.btn_air_mode:
                data = airBean.getmMode();
                data++;
                if (data > 4) {
                    data = 0;
                }
                airBean.setmMode(data);
                SendMsg(airBean);
                break;
            case R.id.btn_air_power:

                if (airBean.getmPower() == 0) {
                    airBean.setmPower(1);
                } else {
                    airBean.setmPower(0);
                }
                //发送消息
                SendMsg(airBean);
                break;
            case R.id.btn_air_up:
                data = airBean.getmTmp();
                data++;
                if (data > 30) {
                    data = 16
智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值