全屏通知

时间:2019-04-22 11:33:47

标签: android firebase android-studio

我想使App像Uber一样,但是我不知道如何发出全屏通知,当驱动程序接收器新请求一个新的屏幕弹出时,它将显示计时器,接受,拒绝按钮。即使驱动程序在后台, 我是新手 这是一个视频链接,我想做什么 https://drive.google.com/file/d/1dhqSDexUKYY---ARHjWcg3bM0tYWRmLo/view?usp=sharing

对不起,英语

我尝试使用全屏平视通知,但效果不佳; 我曾尝试过提供后台服务,但是我做的不好,所以也做得不好。 我正在研究奥利奥(Oreo);

1 个答案:

答案 0 :(得分:1)

我正在使用此代码在应用程序运行模式下收到通知时打开活动。如果您在后台模式下进行活动,则可以使用服务来打开特定活动。

#include <string>
#include <fstream>
#include <map>
#include <iostream>
#include <algorithm>
#include <sstream>

class Participants
{
    int id;
    int score;
    std::string name;
public:
    Participants(): id(0), score(0)
    {}

    Participants(int id, int score, std::string name): id(id), score(score), name(name)
    {}

    ~Participants()
    {}

    int GetId()
    {
        return id;
    }

    std::string encode()
    {
        auto strRet = std::string( name + " " + std::to_string(id) + " " + std::to_string(score) + "\n");
        return  strRet;
    }

    void decode(std::string text)
    {
        std::stringstream ss(text);
        std::string buf;

        //Read Name
        std::getline( ss, buf , ' ');
        name = buf;

        //Read id
        std::getline( ss, buf , ' ');
        id = std::stoi( buf );

        //Read Score
        std::getline( ss, buf , '\n');
        score = std::stoi( buf );

    }
};

class DataReader
{
    std::string fileName;
    std::fstream myfile;

public:
    DataReader(std::string fileName): fileName(fileName)
    {

    }
    ~DataReader()
    {

    }

    void ReadParticipants(std::map<int, Participants> &MapParticipants)
    {
        myfile.open(fileName, std::ios::in);
        MapParticipants.clear();
        if ( myfile.is_open() )
        {
            std::string line;
            while ( std::getline(myfile, line) )
            {
                Participants oParticipants;
                //Decode and Add to map
                oParticipants.decode(line);
                //Add to map
                MapParticipants[ oParticipants.GetId() ] = oParticipants;
            }
        }
        myfile.close();
    }

    void WriteParticipants(std::map<int, Participants> &MapParticipants)
    {
        //Load Map to find Duplicates
        std::map<int, Participants> MapParticipants_exist;
        ReadParticipants(MapParticipants_exist);

        myfile.open(fileName, std::ios::app);
        if ( myfile.is_open() )
        {
            for ( auto oParticipants : MapParticipants)
            {
                //Check for Duplicates (to Write or not)
                if ( MapParticipants_exist.find(oParticipants.first) ==  MapParticipants_exist.end() )
                {
                    auto text = oParticipants.second.encode();
                    myfile << text.c_str();
                }
            }
        }
        myfile.close();
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    DataReader oReader("File.txt");

    std::map<int, Participants> MapParticipants;

    //Make Some Participants
    Participants p1(1, 50, "TOM");
    Participants p2(2, 40, "TIM");
    Participants p3(3, 80, "JERRY");

    //Add them to map
    MapParticipants[p1.GetId()] = p1;
    MapParticipants[p2.GetId()] = p2;
    MapParticipants[p3.GetId()] = p3;


    oReader.WriteParticipants(MapParticipants);

    oReader.ReadParticipants(MapParticipants);

    //Find and Display
    int id = 2;
    auto it = MapParticipants.find(id);
    if ( it != MapParticipants.end() )
    {
        //Show/Print
        ...
    }

    return 0;
}