首页 > 解决方案 > 如何使用意图通过蓝牙 BLE 发送双 [] 数组 - Android Studio (API 17)

问题描述

我正在与 Android Studio 合作一个项目,我正在使用 API 17 android 手机作为 terget。我想通过蓝牙分享一些参数,但我做不到。有人可以帮我吗?我正在使用意图,但现在我只能分享文字。这是我的 result.java 文件:

package com.google.android.gms.samples.vision.face.rPPG;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothManager;
import android.bluetooth.le.AdvertiseData;
import android.bluetooth.le.AdvertiseSettings;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.ParcelUuid;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.LineGraphSeries;
import com.jjoe64.graphview.series.PointsGraphSeries;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class RespirationResult extends AppCompatActivity {

    private String Date;
    int RR;
    int il_risultato;
    double [] plot_array;
    int[] intArray;


    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    java.util.Date today = Calendar.getInstance().getTime();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_respiration_result);

        Date = df.format(today);
        TextView RRR = (TextView) this.findViewById(R.id.RRR);
        ImageButton SRR = (ImageButton)this.findViewById(R.id.SendRR);
        Bundle b = getIntent().getExtras();
        double result = b.getDouble("key");
        plot_array=b.getDoubleArray("array");


        il_risultato=(int) Math.round(result);
        RRR.setText(String.valueOf(il_risultato)); 


        GraphView graph;
        LineGraphSeries<DataPoint> series;       
        graph = (GraphView) findViewById(R.id.graphico);
        series= new LineGraphSeries<>(data());   //initializing/defining series to get the data from the method 'data()'
        graph.addSeries(series);                   //adding the series to the GraphView

        graph.getViewport().setScalableY(true);

        graph.getGridLabelRenderer().setGridColor(Color.DKGRAY);
        graph.getGridLabelRenderer().setHorizontalLabelsColor(Color.DKGRAY);
        graph.getGridLabelRenderer().setVerticalLabelsColor(Color.DKGRAY);
        graph.getGridLabelRenderer().setHorizontalAxisTitle("time(sec)");
        graph.getGridLabelRenderer().setVerticalAxisTitle("RR");

        // set manual X bounds
        graph.getViewport().setXAxisBoundsManual(true);
        graph.getViewport().setMinX(0.5);
        graph.getViewport().setMaxX(100);

        SRR.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
                sendIntent.setType("text/plain");
                startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

            }
        });



    }


    public DataPoint[] data(){
        DataPoint[] values = new DataPoint[plot_array.length];     //creating an object of type DataPoint[] of size 'n'
        for(int i=0;i<plot_array.length;i++){
            DataPoint v = new DataPoint(i,plot_array[i]);
            values[i] = v;
        }
        return values;
    }

    @Override
    public void onBackPressed() {

        Intent i = new Intent(RespirationResult.this, SplashScreen.class);
        startActivity(i);
        finish();
        super.onBackPressed();

    }
}

我会发送plotarray而不是文本。这是我项目的简单 UI: 在此处输入图像描述

标签: androidandroid-studioandroid-intent

解决方案


您可以putSerializable()用于数组。

所以它将是:

Bundle bundle = new Bundle();
bundle.putSerializable("KEY", plot_array);
sentIntent.putExtras(bundle);

推荐阅读