基于手机app的树莓派远程监控(非常全)

基于手机app的树莓派远程监控(非常全),第1张

                基于手机app的树莓派远程监控(非常全) 一.准备器件:树莓派系统板,树莓派自带摄像头

二. 树莓派系统环境:Raspberry Debian 9 手机app运行环境:android studio 三.CSI摄像头配置的话自己弄,摄像头配置完成后可以用 raspistill -o 1.jpg 来测试一下摄像头的拍照功能 四、网络视频监控配置与实现

1、利用mjpg-streamer框架实现,基本配置方案看链接:(链接私聊)

五、树莓派环境配置 1.基本上按照四中的链接配置 都可以直接将树莓派的摄像头运行起来(如图即为运行成功)

 2.但基本配置起来只能在当前目录下运行,因此要添加一下环境,使得全路径运行,方便后面代码的编写。

将该脚本给它一个可执行权限:chmod 777 shart.sh

 修改工作目录下的 .bashrc 隐藏文件, 配置命令终端的

Vi  /home/pi/.bashrc(这比较靠谱点)

直接在文件末尾的最后一行加入路径就行:/home/pjf/shell

 配置完成后保存 并在命令行输入:source ~/.bashrc

重启一下树莓派 ,命令行输入:echo $PATH。显示环境变量添加成功。

3.这时可以在其它路径运行 start.sh 可执行文件了,但要注意start.sh中还有流转发的程序./mjpg_streamer。

 直接在其它路径下运行start.sh会提示 ./mjpg_streamer: not found(除开执行权限的问题外,文件的格式同样也需要去注意

因此 vim start.sh 进入到脚本文件中 将三个文件 ./mjpg_streamer,./input_raspicam.so,./output_http.so 添加至全路径模式(如下图)

 保存退出,start.sh 便可以在其它路径下运行起来了

然后打开浏览器,网址输入http://ip:8080/?action=stream,即可看到监控视频效果

注意注意!!!!

上面的环境变量的配置在linux系统普通用户目录(.bashrc)如果在sudo 下运行代码便不可以了,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限。

因此要想在sudo 下运行还得visudo使用vi打开/etc/sudoers文件来添加环境变量

sudo 命令,为非根用户授予根用户的权限

配置文件是/etc/sudoers,此文件有权限限制,而且有格式要求,万一改错会比较麻烦。使用visudo可以容易配置。

1.输入命令
sudo visudo

添加对应路径

 ctrl x退出按Y保存

重新运行便可以在sudo 下运行该脚本了

六、树莓派代码的实现(上面步骤配置好代码就简单了)
#include 
#include 
#include 
#include 
void* ptintf_hello_world(void* tid);
void* ptintf_hello_world1(void* tid);

int main(void){
        pthread_t thread;
        pthread_t thread1;
        int status,i=10,i1=10;
        printf("Main here. Creating thread %d\n",i);
        status=pthread_create(&thread,NULL,ptintf_hello_world,(void*)i);
        status=pthread_create(&thread1,NULL,ptintf_hello_world1,(void*)i1);

        pthread_join(thread,NULL);  //pthread_join函数以阻塞的方式等待指定的线程结束;如果线程已经结束,函数会立即返回,并且指定的线程>
必须是joinable的 

        exit(0);
}
void* ptintf_hello_world(void* tid){
        sleep(10);
//      system("wget  http://pi:8080/?action=snapshot -O ./1.jpg ");
//      printf("Hello world0 %d.\n",tid);
        exit(0);
}
void* ptintf_hello_world1(void* tid){
        system("start.sh");
        printf("Hello world1 %d.\n",tid);
        exit(0);
}

七、安卓部分代码(注意网络权限的配置)  1.网络权限配置

找到路径app->src->-main->res->AndroidManifest.xml文件

打开 AndroidManifest.xml文件

在application节点之前增加以下代码




 打开使用明文网络流量(加密流量)
 android:usesCleartextTraffic="true"

2.java代码
package com.example.mysuju;

import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MessageActivity extends AppCompatActivity {
    private Button playBtn, stopBtn;
    MediaController mMediaController;
    private WebView webview1;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_message);
        VideoView mVideoView = new VideoView(this);
        //mVideoView = (VideoView) findViewById(R.id.video);
        mMediaController = new MediaController(this);
        webview1 = (WebView) findViewById(R.id.webview1);
        playBtn = (Button) findViewById(R.id.login1);
        //stopBtn = (Button) findViewById(R.id.stopbutton);
        // playBtn.setOnClickListener(new mClick());
        //stopBtn.setOnClickListener(new mClick());
        setview();
       

    }
    private void setview() {
        String url="http://pi:8080/?action=stream";//视频链接
        webview1.loadUrl(url);//打开指定URL的html文件

    }
}
3.  .xml布局代码


    
    

        

    
八、成果展示

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存