Android将GPS封装为Service

本文详细介绍了如何在Android中将GPS功能封装成Service,包括Service的创建、GPS位置监听、数据处理以及如何在应用程序中使用封装后的Service获取地理位置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MainActivity.java


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button startService;
    private Button stopService;
    private EditText editText=null;
    private MyReceiver receiver=null;
    private EditText username, password, positionName;
    private SQLiteDatabase DB;
    private ListView values;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        username = (EditText) findViewById(R.id.username);
        password = (EditText) findViewById(R.id.userpwd);
        positionName = (EditText) findViewById(R.id.positionName);
        values = (ListView) findViewById(R.id.values_list);
        DB = SQLiteDatabase.openOrCreateDatabase(getFilesDir() + "/info.db",
                null);

        editText=(EditText)findViewById(R.id.editText);
        startService = (Button) findViewById(R.id.start_service);
        stopService = (Button) findViewById(R.id.stop_service);
        startService.setOnClickListener(this);
        stopService.setOnClickListener(this);

        // 长按删除
        values.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           int arg2, long arg3) {
                // 获取所点击项的_id
                TextView tv = (TextView) arg1.findViewById(R.id.tv_id);
                final String id = tv.getText().toString();
                // 通过Dialog提示是否删除
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        MainActivity.this);
                builder.setMessage("确定要删除吗?");
                // 确定按钮点击事件
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        delete(id);
                        replaceList();// 删除后刷新列表
                    }
                });
                // 取消按钮点击事件
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                builder.create().show();

                return true;
            }
        });
        // 点击更新
        values.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {
                // 获取_id,username,password项
                TextView tvId = (TextView) arg1.findViewById(R.id.tv_id);
                TextView tvName = (TextView) arg1
                        .findViewById(R.id.tv_username);
                TextView tvPass = (TextView) arg1
                        .findViewById(R.id.tv_password);
                TextView tvPName = (TextView) arg1
                        .findViewById(R.id.tv_positionName);
                final String id = tvId.getText().toString();
                String username = tvName.getText().toString();
                String password = tvPass.getText().toString();
                String positionName = tvPName.getText().toString();
                // 通过Dialog弹出修改界面
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("修改");
                // 自定义界面包括两个文本输入框
                View v = View.inflate(MainActivity.this, R.layout.alertdialog,
                        null);
                final EditText etName = (EditText) v
                        .findViewById(R.id.alert_name);
                final EditText etPass = (EditText) v
                        .findViewById(R.id.alert_pass);
                final EditText etPName = (EditText) v
                        .findViewById(R.id.alert_positionName);
                // Dialog弹出就显示原内容
                etName.setText(username);
                etPass.setText(password);
                etPName.setText(positionName);

                builder.setView(v);
                // 确定按钮点击事件
                builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String newName = etName.getText().toString();
                        String newPass = etPass.getText().toString();
                        String newPName = etPName.getText().toString();
                        updata(newName, newPass, id, newPName);
                        replaceList();// 更新后刷新列表
                    }
                });
                // 取消按钮点击事件
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                builder.create().show();
            }
        });
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.start_service:
                Intent startIntent = new Intent(this, MyService.class);
                startService(startIntent); // 启动服务
                //注册广播接收器
                receiver=new MyReceiver();
                IntentFilter filter=new IntentFilter();
                filter.addAction("com.example.liwenxiao.myservice");
                MainActivity.this.registerReceiver(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值