当前位置: 首页 > news >正文

Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!

整体实现效果展示

智能家居系统

页面一

1.实现效果

用户进行注册(后登录),通过数据库存储数据用户的账号和密码。

点击记住密码保存账号和密码信息。

同时注册界面实现淡入淡出的动画效果

2.数据库代码

数据库存储核心代码:

//数据库的创建和更新(删除)@Overridepublic void onCreate(SQLiteDatabase db) {String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS + "("+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"+ KEY_USERNAME + " TEXT UNIQUE,"+ KEY_PASSWORD + " TEXT" + ")";db.execSQL(CREATE_USERS_TABLE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);onCreate(db);}

3.登录代码

登录界面核心代码:

//与数据库进行核对(核对账号和密码)if (databaseHelper.checkUser(username, password)) {//检查是否勾选来保存信息(将信息保存到sharedPreferences中用于转动填充)if (rememberPasswordCheckBox.isChecked()) {SharedPreferences.Editor editor = sharedPreferences.edit();editor.putBoolean("remember", true);editor.putString("username", username);editor.putString("password", password);editor.apply();} else {SharedPreferences.Editor editor = sharedPreferences.edit();editor.clear();editor.apply();}//退出动画(登录动画效果与进入动画一致)Animation slideDown = AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_down);loginContainer.startAnimation(slideDown);//监听处理动画是否结束slideDown.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束后跳转到MainActivity2Intent intent = new Intent(MainActivity.this, MainActivity2.class);intent.putExtra("username", username);startActivity(intent);finish();}@Overridepublic void onAnimationRepeat(Animation animation) {}});} else {Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();}

4.动画代码

动画效果核心代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true">
<!--    动画结束后保持最终状态--><translateandroid:duration="1500"android:fromYDelta="100%"android:toYDelta="0%"/><alphaandroid:duration="1500"android:fromAlpha="0.0"android:toAlpha="1.0"/>
</set>


页面二

1.实现效果

通过数据库将注册的账号和密码进行存储。

2.注册代码

registerButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String username = regUsernameEditText.getText().toString().trim();String password = regPasswordEditText.getText().toString().trim();if (username.isEmpty() || password.isEmpty()) {Toast.makeText(MainActivity3.this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();return;}if (databaseHelper.userExists(username)) {Toast.makeText(MainActivity3.this, "用户名已存在", Toast.LENGTH_SHORT).show();return;}if (databaseHelper.addUser(username, password)) {Toast.makeText(MainActivity3.this, "注册成功", Toast.LENGTH_SHORT).show();finish();} else {Toast.makeText(MainActivity3.this, "注册失败", Toast.LENGTH_SHORT).show();}}});


页面三

1.实现效果

开启灯光/风扇。

添加设备,实现设备插入到当前页。

点击设备选购,跳转到淘宝页面。

点击问卷调查,实现问卷调查题目,整合后可实现短信发送。

 

2.开启灯光/风扇

//开关灯private void toggleLight() {isLightOn = !isLightOn;int colorFrom = isLightOn ? 0xFF9E9E9E : 0xFFFFD600;int colorTo = isLightOn ? 0xFFFFD600 : 0xFF9E9E9E;ObjectAnimator colorAnim = ObjectAnimator.ofObject(lightIcon, "colorFilter",new ArgbEvaluator(), colorFrom, colorTo);colorAnim.setDuration(300);colorAnim.start();lightButton.setText(isLightOn ? "关闭灯光" : "开启灯光");}//开关风扇private void toggleFan() {isFanOn = !isFanOn;if (isFanOn) {fanIcon.startAnimation(fanRotation);fanButton.setText("关闭风扇");} else {fanIcon.clearAnimation();fanButton.setText("开启风扇");}}

 

3.添加设备接收

添加设备接收处理

//处理返回数据
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 100 && resultCode == RESULT_OK && data != null) {String deviceName = data.getStringExtra("deviceName");int imageResId = data.getIntExtra("imageResId", R.drawable.photo_home);addNewDeviceCard(deviceName, imageResId);}if (requestCode == 200 && resultCode == RESULT_OK && data != null) {String surveyResult = data.getStringExtra("surveyResult");showSmsDialog(surveyResult);}}

 

4.淘宝跳转

//跳转到淘宝private void openTaobao() {try {//尝试打开淘宝应用//创建一个隐式 Intent,通过 ACTION_VIEW 动作和淘宝的协议链接 taobao://s.taobao.com 尝试唤起淘宝应用Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("taobao://s.taobao.com"));startActivity(intent);} catch (ActivityNotFoundException e) {try {//如果淘宝应用未安装,跳转到应用商店下载页面Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.taobao.taobao"));startActivity(intent);} catch (Exception ex) {//如果应用商店也无法打开,提示用户检查网络或手动下载Toast.makeText(this, "无法打开淘宝应用。请检查网络连接或手动前往应用商店下载。", Toast.LENGTH_LONG).show();}}}

 

5.问卷调查

采用AlterDialog.Builder构建数据。

private void showSmsDialog(String surveyResult) {//实例化一个AlertDialog.Builder对象,用于构建对话框AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("问卷调查结果");builder.setMessage("即将发送问卷结果:\n\n" + surveyResult);builder.setPositiveButton("发送短信", (dialog, which) -> {Intent smsIntent = new Intent(Intent.ACTION_VIEW);//设置短信URI:使用smsto协议指定这是一个短信意图smsIntent.setData(Uri.parse("smsto:"));//将问卷调查结果加到Intent中smsIntent.putExtra("sms_body", surveyResult);//启动短信startActivity(smsIntent);});builder.setNegativeButton("取消", null);builder.show();}


页面四

1.实现效果

设备添加到上一页中

2.添加设备发送 

//返回按钮(销毁当前页面)backButton.setOnClickListener(v -> finish());//图片切换deviceImage.setOnClickListener(v -> {currentImageIndex = (currentImageIndex + 1) % deviceImages.length;deviceImage.setImageResource(deviceImages[currentImageIndex]);});//添加设备按钮packButton.setOnClickListener(v -> {String deviceName = deviceNameInput.getText().toString().trim();if (deviceName.isEmpty()) {Toast.makeText(this, "请输入设备名称", Toast.LENGTH_SHORT).show();return;}//返回数据到MainActivity2Intent resultIntent = new Intent();resultIntent.putExtra("deviceName", deviceName);resultIntent.putExtra("imageResId", deviceImages[currentImageIndex]);setResult(RESULT_OK, resultIntent);finish();});


页面五

1.实现效果

将问卷调查信息发送到AlterDialog.Builder中。

2.问卷内容

// 处理使用场景多选StringBuilder usageTypes = new StringBuilder();if (lightingCheck.isChecked()) usageTypes.append("智能灯光, ");if (securityCheck.isChecked()) usageTypes.append("安防系统, ");if (comfortCheck.isChecked()) usageTypes.append("舒适控制, ");if (energyCheck.isChecked()) usageTypes.append("节能管理, ");if (otherCheck.isChecked()) usageTypes.append("其他");String feedback = feedbackEditText.getText().toString();// 构建结果字符串String result = "智能家居使用情况调查结果:\n\n" +"年龄: " + age + "\n" +"使用频率: " + frequency + "\n" +"满意度: " + satisfaction + "\n" +"使用场景: " + usageTypes.toString() + "\n" +"意见建议: " + feedback;// 返回结果Intent resultIntent = new Intent();resultIntent.putExtra("surveyResult", result);setResult(RESULT_OK, resultIntent);finish();}private String getSelectedFrequency() {int selectedId = frequencyGroup.getCheckedRadioButtonId();if (selectedId == R.id.dailyRadio) {return "每天";} else if (selectedId == R.id.weeklyRadio) {return "每周";} else if (selectedId == R.id.monthlyRadio) {return "每月";} else if (selectedId == R.id.rarelyRadio) {return "很少";}return "未选择";}private String getSelectedSatisfaction() {int selectedId = satisfactionGroup.getCheckedRadioButtonId();if (selectedId == R.id.verySatisfiedRadio) {return "非常满意";} else if (selectedId == R.id.satisfiedRadio) {return "满意";} else if (selectedId == R.id.neutralRadio) {return "一般";} else if (selectedId == R.id.unsatisfiedRadio) {return "不满意";}return "未选择";}

 


 感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!

相关资源获取WX搜索:JannineSpr

相关文章:

  • 65、【OS】【Nuttx】任务休眠与唤醒:nxsig_clockwait
  • BeikeShop - 一个开源、用户友好的跨境电子商务平台
  • [学习] 深入解析Z变换:从数学基础到工程应用
  • 基于高性能的光频域反射(OFDR)分布式光纤传感解决方案
  • 爬虫技术:从基础到高级,探索数据抓取的奥秘
  • 写实数字人课程制作平台:教育科技的未来已来
  • 在劲牌工厂,探寻一瓶草本酒的科技之旅
  • C++ 继承特性
  • 3-19 WPS JS宏调用工作表函数(JS 宏与工作表函数双剑合壁)学习笔记
  • skynet源码学习-skynet_env守护进程
  • 如何用conda 安装pytorch
  • LangSmith 深度解析:构建企业级LLM应用的全生命周期平台
  • 编译器、调试器、仿真器:嵌入式开发的“三把刀”深度解析
  • ​​信息系统项目管理师-项目进度管理 知识点总结与例题分析​​
  • java spring boot Swagger安装及使用
  • 轻松搭建Linux开发环境:使用`build-essential`安装GCC编译器**
  • React Native 搭建iOS与Android开发环境
  • 【matlab】图片转视频
  • 如何理解DDD的领域和子域?
  • git回滚操作
  • 动态网站的功能与特点/关键词优化公司前十排名
  • 来个网站吧好人一生平安2022/app软件下载站seo教程
  • 网站建设对企业重要性/网站关键词搜索排名
  • 南阳网站关键词/网络营销发展现状与趋势
  • 做网站技术服务合同/网络营销员岗位的职责与要求
  • 网站建设 pdf/搭建一个网站需要多少钱?