控制接近传感器的后台服务

2023-12-08

我需要运行一个控制接近传感器状态的服务(始终在后台,我希望该服务不断检查,即使应用程序已关闭),并在其覆盖时启动一个活动。我尝试过,但出现了错误。有类似这样的例子吗?

附:在我的 AndroidManifest 中我添加了:

            <service
            android:name="xxx.xxxxx.xxxxx.MyService"
            android:enabled="true" />

这里是我的 MyService.java:(Eclipse 不会报告任何错误,但当我在我的设备上尝试它时,应用程序会强制关闭。)

import android.app.Service;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.IBinder;
import android.widget.Toast;


public class MyService extends Service implements SensorEventListener {
Sensor proxSensor;
SensorManager sm;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
    sm=(SensorManager)getSystemService(SENSOR_SERVICE);
    proxSensor=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);

    sm.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    Intent panel = new Intent(this, Panel.class);
    startActivity(panel);
}
@Override
public void onDestroy() {
    Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
}

    }

这是我的 Main.java :

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.lino99.smartTask.R;

public class Main extends Activity implements OnClickListener {
Button buttonStart, buttonStop;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStop = (Button) findViewById(R.id.buttonStop);

buttonStart.setOnClickListener(this);
buttonStop.setOnClickListener(this);
}

public void onClick(View src) {
switch (src.getId()) {
case R.id.buttonStart:
  startService(new Intent(this, MyService.class));
  break;
case R.id.buttonStop:
  stopService(new Intent(this, MyService.class));
  break;
}
}
}

好的,这里对您的代码进行了一些更改,这些更改应该可以清除您的错误并使您的服务持续进行并使您的接近传感器做出响应:

您的服务应该是这样的:

@Override
public void onCreate() {//onCreat shouldn't be used for sensor u should use onStartCommand
    Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    //here u should use the following code otherwise your sensor will be crazy
    if(event.values[0] == 0){
    Intent panel = new Intent(this, Panel.class);
    startActivity(panel);
    }
}
@Override
public void onDestroy() {//here u should unregister sensor
    Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
    sm.unregisterListener(this);
}

@Override//here u should register sensor and write onStartCommand not onStart
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
    sm=(SensorManager)getSystemService(SENSOR_SERVICE);
    proxSensor=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    sm.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);

    //here u should make your service foreground so it will keep working even if app closed

    NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Intent bIntent = new Intent(MyService.this, MainActivity.class);       
    PendingIntent pbIntent = PendingIntent.getActivity(MyService.this, 0 , bIntent, 0);
    NotificationCompat.Builder bBuilder =
            new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("Title")
                .setContentText("Subtitle")
                .setAutoCancel(true)
                .setOngoing(true)
                .setContentIntent(pbIntent);
    barNotif = bBuilder.build();
    this.startForeground(1, barNotif);

        //then you should return sticky
        return Service.START_STICKY;
}

}

好的,现在尝试该代码,让我知道它如何为您工作,希望对您有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

控制接近传感器的后台服务 的相关文章

  • 如何使用 ProGuard 将所有方法保留在类中

    我使用 ProGuard 来优化我的 Android 应用程序 然而 对于 Android 仪器测试 我需要一些 但不是全部 类来保留所有成员 我尝试了各种方法 最后一个是 keepclassmembers public class com
  • 如何在 Android / Java 中获取图像的分辨率

    如何在 Android 中找到任何图像的分辨率 获取存储在磁盘中的图像大小的有效方法 例如获取用户选择上传的图像文件的大小 是使用BitmapFactory Options并设置inJustDecodeBounds为真 这样做你就会获取图像
  • Android 中用虚拟键盘捕捉按键按下的情况?

    使用物理键盘 您可以使用按键监听器 http developer android com reference android text method KeyListener html 就像是 myEditText setOnKeyListe
  • Firebase 数据库快速入门处理计数的方式安全吗?

    我想为文章点赞创建一个增量字段 我指的是这个链接 https firebase google com docs database android save data save data as transactions https fireb
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • 如何查看 Android 上的 Wi-Fi 是否已连接?

    我什至不希望我的用户尝试下载某些内容 除非他们连接了 Wi Fi 然而 我似乎只能判断是否启用了 Wi Fi 但他们仍然可以有 3G 连接 android net wifi WifiManager m WifiManager getSyst
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • 使用 C#/VBScript 获取 mdb 文件 (msaccess) 中的所有源代码

    我想从一个网站获取所有源代码Access数据库 表单 模块 而不使用 Office 互操作 我喜欢AllCodeToDesktop 功能在这里找到 然而 这是从内部运行的mdb file 加载 mdb 文件并在其上运行该函数的 VBScri
  • 如何用Javascript减慢滚动速度?

    当我滚动一些包含许多元素的小 div 时 我的鼠标滚动太快 所以我看不到几个元素 滚动速度无法更改 因为它们是系统配置 并且不应允许 JavaScript 更改用户自己的设置 但是您可以使用很多 jquery 自定义滚动条 它们提供了更改滚
  • iScroll 仅动态填充的 div,也不滚动主页

    所以这篇文章可能会很长 但我还是坚持使用 iScroll 我正在做的是用文章填充我的列表 当单击其中一篇文章时 我会在列表上滑动一个 div 以显示该文章 该部分有效 但无效的是 当我滚动文章并到达末尾时 它会不断滚动文章列表 你可以看看h
  • 为什么 Date#getHours() 返回小时 + 1?

    This是我的代码 var feedDataTimestamp new Date 2014 01 14T00 04 40 0000 getTime var parsedDate new Date feedDataTimestamp aler
  • 如何立即停止 UIWebView 加载

    正如ios文档所说 webView stopLoading 应该使用方法来停止 webview 加载任务 据我所知 此方法异步运行 并且不会立即停止当前处理加载请求 但是 我需要一种方法来强制 webview 立即停止正在进行的任务 因为加
  • Python SimpleXMLRPCServer 中客户端的 IP 地址?

    我有一个简单XMLRPC服务器服务器 Python 如何在请求处理程序中获取客户端的 IP 地址 此信息出现在日志中 但是 我不确定如何从请求处理程序中访问此信息 正如迈克尔指出的 你可以得到client address从请求处理程序中 例
  • sqlite:检查读取器/写入器锁定

    我有 2 个进程 它们都访问 sqlite3 数据库 虽然在 sqlite 中读取不是问题 但只有一个进程可以写入数据库 根据常见问题解答 http www sqlite org faq html q5sqlite 使用读 写锁 我如何检查
  • Android:动态获取Body Layout的大小

    我想在 onCreate 方法中获取 Middle Body 布局的高度 宽度 我的 main xml 是
  • 非字节可寻址架构的 md5 实现?

    MD5 的常见实现由下式给出RFC1321 哪里的MD5Update函数接收一个指向chars 我的架构 SHARC ADSP 21371 不可字节寻址 这意味着 sizeof int32 t 1 因此我不能真正按原样使用这个算法 我需要包
  • jsp中如何将双精度数转换为整数

    假设在 jsp 文件中 我想显示计算得出的值 如下所示
  • 在Android中如何使用ObjectAnimator沿着曲线移动到点x

    我有一个图像视图 石头 并将其从当前位置移动到 X Y 位置 我想让它沿着曲线移动 请告诉我如何做到这一点 我已将最小 api 设置为 11 ObjectAnimator moveX ObjectAnimator ofFloat stone
  • onClick 循环遍历具有相同类的 DIV

    我正在尝试创建一个脚本来循环遍历具有相同类名的 DIV 一次一个 nextAll 所有这些有趣的事情对我来说都是完全陌生的 我怎样才能让它发挥作用 这是它应该如何工作的 当您单击右侧的浅灰色框时 它应该显示下一个 hint连同它的hint
  • 允许访问 Apache 服务器上隐藏目录中的文件(尤其是“.wellknown”文件夹)

    我想通过 webroot 目录 well known acme challenge 为我的域创建 SSL 证书以进行验证 我正在使用共享主机 并且无权访问 apache 配置文件 因此我只能使用 htaccess 文件 问题是我无法使用地址
  • 如何在 Rust 中实现向量的多个可变借用? [复制]

    这个问题在这里已经有答案了 我正在 Rust 中实现矩阵 该代码已针对示例进行了调整 但可能存在一些小错误 derive Debug PartialEq pub struct Matrix
  • jQuery 可以改变 `$(window).width()` 吗?

    是否可以改变 window width 通过 jQuery 这样的事情是可能的 click click function menu 100px with window width 不 这不对 底层 DOM 元素本身不支持修改浏览器窗口的宽度
  • 在 Django 中连接两个包含相同外键的表

    所以我有两个包含主键 用户 的模型 class Reviews models Model subject user models ForeignKey User related name reviewed user actor models
  • Excel VBA 发送到 MSXML2.XMLHTTP 不起作用

    我在 Excel VBA 中有以下代码 直到昨天它都运行良好 现在尝试检查 URL 时失败 但 URL 确实存在 它失败了 oXHTTP send 它会出现错误 Function HttpExists sURL As String As B
  • 如何隐藏 ngb-carousel 指示器和 prev-next 控件

    我无法通过 css 隐藏 ngb carousel 指示器和 prev next 控件 定位 css 类是行不通的 有什么选项可以隐藏它吗 为了影响 ng bootstrap 组件的 css 您必须禁用 ViewEncapsulation
  • 尽管格式有效,MySQL str_to_date 仍生成 NULL

    我正在尝试使用 mysql 中的 str to date 函数将 TEXT 字段转换为日期 现在运行 mysql gt select Date from sampleData limit 2 Date 25 01 2012 25 01 20
  • 控制接近传感器的后台服务

    我需要运行一个控制接近传感器状态的服务 始终在后台 我希望该服务不断检查 即使应用程序已关闭 并在其覆盖时启动一个活动 我尝试过 但出现了错误 有类似这样的例子吗 附 在我的 AndroidManifest 中我添加了