【Android】Java多功能通讯录APP项目设计

❥ 每每学习一门课程,都少不了一门课设布置下来

《移动互联开发》课开了8天,要设计一款App,果然大学即自学,而且一学期好几个 (555

❥ 下面把最近开发的Android Studio项目的相关开发内容、经验与感想分享给大家

对安卓的了解:

 Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 Linux 内核层。

它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。安卓在移动产业内形成一个开放式的生态系统。我们认为此举必将推进更好、更快的创新,为移动用户提供不可预知的应用和服务。

Android有四大基本组件:Activity、Service、Broadcast Receivet、Content Provider。其中Activity是四大组件中最基本的一个,但基础并不等同于简单、不重要。恰恰相反,Activity作为基础组件,学好Activity就是我们开发者学好Android的前提。 

安卓有以下三大特点

1)系统开源。Android由于最底层使用Linux 内核,使用的是GPL许可证, 意味着相关的代码是必须开源的。Google以Apache授权方 式,发布Android的源代码,供其他手机厂商直接使用现有操作系统,并允许各厂商按照自己的目的进行个性化定制。 

2)跨平台特性。Android由Java编写,继承了Java跨平台的特点。任何Android应用几乎无需做任何处理就能运行于所有的Android设备。这意味着各运营商可自由使用多形式的硬件设备,不拘泥于手机、平板等传统移动设备,电视和各种智能家居均可使用 Android 系统。 

3)丰富的应用。Android系统的开源性吸引了众多开发者为其平台开发各式各样的应用软件,广泛的应用来源让它的使用者较为方便的获取自己想要的应用,坚实的消费者基础让开发者有动力开发更多更好的应用软件。

课设项目要求:

这次课程设计是要开发一个具有基础的登录功能和好友列表显示功能的Android App,在结合前面的实验所实现的功能,实现了较为完整的app项目;设计实现Android界面数据的综合加载跳转及展示。设计实现了对数据库中数据的添加、编辑和删除。

项目构思:

根据项目要求,判断是要做一个仿聊天App或者仿通讯录App,后者可能不是那么泛滥,于是以制作一个通讯录App为目标,下面会进行具体的介绍。

本软件主要面向的是对网上通讯有需求的人群,让他们能够及时获取在线跨区域联系,不受时间和空间的限制。

后面同样会对已有的信息进行数据可视化的处理,使数据以一种更为生动的形式呈现出来,以此来实现App的稳定执行。

下面就是重点具体细节啦

目录

⭐️项目简介

⭐️功能简介

⭐️系统功能图

⭐️数据库设计

⭐️执行过程

⭐️主要页面代码

⭐️功能介绍(界面&描述&代码)

☀️用户个人功能(个人资料与扫码)

☀️联系人录入功能

☀️联系人信息编辑功能

☀️联系人扩展功能(打电话&发短信&通讯记录)

☀️通讯录功能 

☀️通话记录功能

⭐️不足之处

⭐️完善方向


⭐️项目简介

本项目的研究目的是开发一款简易的Android手机通讯录APP,主要是模拟通讯录app的相基础关功能,功能类似于传统手机通讯录,主要能够实现个人资料编辑和扫码添加功能,通讯录查询和拨打电话以及发送短信功能,也可以查询通话记录、新建联系人并进行编辑等操作。使用的是android studio和java设计。

⭐️功能简介

⭐️系统功能图

 用户登录后个人资料设计、获取二维码并进行扫码添加,可以添加联系人,添加结束之后可以对联系人信 息进行修改和查询。

 有了联系人之后,就可以进行发送短信和拨打电话操作。此后可以进行通话记录查询 ,实现了基础的通讯录好友联系功能。 

⭐️数据库设计

⭐️执行过程

⭐️主要页面代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.basic">

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.example.util.zxing.activity.CaptureActivity"
            android:screenOrientation="portrait"/>
        <service android:name="com.example.service.NotifyService"/>
    </application>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>

⭐️功能介绍(界面&描述&代码)

☀️用户个人功能(个人资料与扫码)

 编辑用户信息的时候,主要是姓名、 电话、住址和单位,并且额外设计了扫码添加功能

☀️联系人录入功能

❥ 新建联系人信息的时候,联系人的主要信息有姓名、电话、住址和单位这些。查询的时候,我们能依据这些信息进行模糊查询。

​ 

☀️联系人信息编辑功能

 新建联系人之后,能够对联系人信息重新编辑。在更改联系人信息的时候,联系人的主要信息有姓名、电话、住址和单位。

☀️联系人扩展功能(打电话&发短信&通讯记录)

 新建联系人之后,能够对联系人信息重新编辑。此外还设有扩展功能: 打电话发送短信和通话记录查询功能

 部分代码

    /* 打电话 */
    public static void callPhone(Activity activity, String phone) {
        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
        activity.startActivity(intent);
    }

    /* 发消息 */
    public static void sendMessage(Activity activity, String tel, String content) {
        if (PhoneNumberUtils.isGlobalPhoneNumber(tel)) {
            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + tel));
            intent.putExtra("sms_body", content);
            activity.startActivity(intent);
        }
    }

☀️通讯录功能 

 相当于一个好友列表功能。

 根据想要联系的人, 可以通过点击图标选择拨打电话或者发送短信联系,这里的界面都模拟了现实世界中正常的通讯界面(与上方通话&短信界面一致)。同时可以进行关键字查询,直接定位到某一位联系人

☀️通话记录功能

❥ 这里可以看到相关的通话对象&号码以及具体通话的年月日及时间,同时可以进行关键字查询,搜索具体某次的通话记录

 相关代码

public class ContactCallRecordAdapater extends BaseAdapter<CallMess, ContactCallRecordAdapater.ContactCallRecordViewHodler> {
    public ContactCallRecordAdapater(Context context) {
        super(context);
    }   @Override
    protected int onBindLayout() {
        return R.layout.list_item_forrecord;
    }   @Override
    protected ContactCallRecordAdapater.ContactCallRecordViewHodler onCreateHolder(View view) {
        return new ContactCallRecordAdapater.ContactCallRecordViewHodler(view);
    }  @Override
    protected void onBindData(ContactCallRecordAdapater.ContactCallRecordViewHodler holder, CallMess callMess, int positon) {
        holder.recordDate.setText(LongToString(callMess.getCallDate()));
        switch (callMess.getCallStatus()) {
            case 1:     holder.recordType.setText("呼入");    break;
            case 2:      holder.recordType.setText("呼出");     break;
            case 3:      holder.recordType.setText("未接");     break;
            default:    break;
        }
    }
    static class ContactCallRecordViewHodler extends RecyclerView.ViewHolder {
        private TextView recordDate;
        private TextView recordType;
        public ContactCallRecordViewHodler(@NonNull View itemView) {
            super(itemView);
            recordDate = itemView.findViewById(R.id.recordDate);
            recordType = itemView.findViewById(R.id.recordType);
        }
    }
    /* 长整型转时间函数 */
    public static String LongToString(long time)
    {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        formatter.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
        return formatter.format(new Date(time));
    }
}

⭐️不足之处

⭐️完善方向

猜你喜欢

转载自blog.csdn.net/Luoxiaobaia/article/details/124895989
今日推荐