实验笔记之——基于Android的VLP定位APP

2025-02-11

引言

好多年前进行过基于java的Android开发,并且搭建了基于可见光通信的室内定位APP,最近看了一下原来的project,发现有不少可以改进的空间。当然~以前学习的基于Android的开发也基本忘光光了hhh,为此,写下本博客记录本人重新搭建的过程。本博客仅供本人学习记录用~

下面为本project的实测效果,从视频可以看到VLP和PDR locating相互切换显示当然使用的定位方法:

打开并配置项目

android有一个很烦人的点就是版本之间差距较大,且不兼容,导致不同版本之间代码兼容很容易出问题,一个常见的例子就是几年前自己开发的app,几年后再用竟然配置不了。。。因此,先对项目进行适配

  • 过程可参考之前的博客

debug记录

出现报错Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 应该是使用的jdk版本不一样,换成电脑中安装好的即可了~

  • 首先File——>Setting——>Build Tools——>Gradle,看到我们的Gradle JDK路径。

改成安装好的

然后重新同步项目

出现报错Possible solution: - Upgrade Gradle wrapper to 7.2 version and re-import the project

  • 尝试直接点击升级看看效果如何~

出现报错Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @370a761d

  • 这应该是属于运行报错不是配置报错(因为是在我build app的时候出现的)
  • 在\AndroidStudioProjects\VLP_PDR\gradle.properties中添加(注意原本的org.gradle.jvmargs要注释掉),添加后同步一下~
    #JDK为了方便兼容原来没有使用模块化的项目,提高了一些配置
    org.gradle.jvmargs=-Xmx1536M \
    --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
    --add-opens=java.base/java.io=ALL-UNNAMED \
    --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED\
    --Xmx2048m -Dfile.encoding=UTF-8
    

出现报错Execution failed for task ':opencv430:compileDebugJavaWithJavac'.

  • 关于这个报错没有认真去查,把\AndroidStudioProjects\VLP_PDR\gradle.properties中的设置为classpath "com.android.tools.build:gradle:4.2.2"
  • 然后再把\AndroidStudioProjects\VLP_PDR\app\build.gradle中的设置改为如下:
      compileSdkVersion 30
      buildToolsVersion "30.0.2"
      ndkVersion '22.1.7171670'
    
  • 即可解决这个错误(我个人认为是跟opencv编译过程相关的吧~)

针对运行按钮不出来的解决方案

打开一个旧的项目,有时可能出现如下图所示的运行按钮没有显示的情况:

点击图中的Add Configuration,点+号,并选择Android App选项

在module的下拉菜单中没有发现app

更改名字为app然后点击确定和应用,此时还是有个叉号的

然后点击搜索框,并找sync(sync project with gradles files)

但是似乎没有效果,并且重新打开也是一样的~~~ 接下来尝试打开\app\guangxun\build.gradle确保存在:

apply plugin: 'com.android.application'

如果不存在,那么大概率就是当前目录并不是构建的安卓app目录,注意切换即可~

push代码到Github

  • 首先在setting中配置github
  • 依次点击菜单中的“VCS” -> “Import into Version Control” -> “Share Project on GitHub”
  • 若在某些地区,可能会链接不上。那么可以改为用Termainal命令也行~
# 初始化github仓库(注意windows和ubuntu中命令稍有不一样)
rm -r ./git

git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:KwanWaiPang/Your_project_name.git
git push -u origin main


关于代码的一些基本操作

主要的代码目录

  • C:\Users\gwpsc\AndroidStudioProjects\VLP_PDR\app\src\main\java\com\example\pdr_vlp_demo\MainActivity.javamain activity可以理解为代码主函数入口
  • 其中onCreate应该就是正式运行这个activity的入口代码那
  • 整个页面样式的设计在:C:\Users\gwpsc\AndroidStudioProjects\VLP_PDR\app\src\main\res\layout\activity_main.xml
  • 曝光度的设置在C:\Users\gwpsc\AndroidStudioProjects\VLP_PDR\app\src\main\java\com\example\pdr_vlp_demo\Camera2\Camera2.java

参考资料