您的位置:首页 > 移动开发 > Android开发

智能LED灯 Android界面及串口发送数据实现

2015-07-26 22:26 441 查看
这个课题是小学期时我们组的大作业题目,老师让用Android实现,我们小组都没会Android的,只好临时看了看,代码写得比较丑,也参考了很多书上和网上的源代码,特别是GridView控件的使用。

1.首先是串口类和初始化的实现,这个网上有很多的代码,可以参考 点击打开链接

SerialPort、SerialPortFinder、Application、SerialPortActivity、SerialPortPreferences这几个类是现成的,如何没有设置端口的话向串口发送数据会出错,在手机上应该是不能运行的,我们是在试验箱上运行的。

2.多组LED控制实现

LEDControlActivity、GridItem类实现,代码会放在下面,主要实现长按GridView里的ImageView实现多项选中和点击Turn按钮向串口发送数据修改LED状态

/*--------重写MultiChoiceModelListener的方法------------------*/
	@Override
	public boolean onCreateActionMode(ActionMode mode,Menu menu){
		View v = LayoutInflater.from(this).inflate(R.layout.actionbar_layout, null);
		actionText = (TextView) v.findViewById(R.id.action_text);
		actionText.setText(formatString(ledGrid.getCheckedItemCount()));
		mode.setCustomView(v);
		getMenuInflater().inflate(R.menu.action_menu, menu);
		return true;
	}
	
	@Override
	public boolean onPrepareActionMode(ActionMode mode,Menu menu){
		//如果item全部选中,则让全选按钮失效
//		menu.getItem(MENU_SELECT_ALL).setEnabled(ledGrid.getCheckedItemCount() != ledGrid.getCount());
		return true;
	}
	
	//全选和全不选
	@Override
	public boolean onActionItemClicked(ActionMode mode,MenuItem item){
		switch (item.getItemId()) {
		case R.id.menu_select:
			for(int i =0;i<leds.length;i++){
				ledGrid.setItemChecked(i, true);
				selectMap.put(leds[i], true);
			}
			break;
		case R.id.menu_unselect:
			for(int i=0;i<leds.length;i++){
				ledGrid.setItemChecked(i, false);
				selectMap.clear();
			}
			break;
		}
		return true;
	}
	
	//销毁对象时更新Adapter
	@Override
	public void onDestroyActionMode(ActionMode mode){
		gridAdapter.notifyDataSetChanged();
	}
	
	//提示当前选中个数,并把选中项添加到selectMap中
	@Override
	public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
			boolean checked) {
		actionText.setText(formatString(ledGrid.getCheckedItemCount()));
		if(checked == true){
			selectMap.put(leds[position], checked);
		} else if(checked == false){
			selectMap.remove(leds[position]);
		}
		mode.invalidate();
	}
	/*--------重写MultiChoiceModelListener的方法------------------*/


3.定时控制

学长要关网辣,明天再补全

代码在:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: