Record audio to file on Android media and send it to smartphone using WearCompanionLibrary

I am making an application that allows a user to record a voice using a smart card and then send it to a smartphone using the Wear Companion Library . I am writing a file and I think sending it works too (code runs), but smartphone is not receiving anything.

Here is my code:

Wear

public class MainActivity extends Activity implements WearFileTransfer.OnChannelTransferProgressListener {
private static final String TAG = "MainActivity";
private static final int RECORDING_REQUEST_CODE = 1;
private static final int PERMISSIONS_REQUEST_CODE = 2;
public static final String EXTRA_RECORDING_FILE_NAME
        = "com.google.devrel.wcl.widgets.wclrecorderactivity.EXTRA_RECORDING_FILE_NAME";
public static final String EXTRA_RECORDING_STATUS
        = "com.google.devrel.wcl.widgets.wclrecorderactivity.EXTRA_RECORDING_STATUS";
public static final String CAPABILITY_FILE_PROCESSOR = "file_processor";

ImageButton microphoneButton;
ImageButton messageButton;

private ProgressBar mProgressBar;
private Handler mHandler;

private WearManager mWearManager;
private AbstractWearConsumer mWearConsumer;

boolean recording; //indicates if recording should stop or continue

public void record(View view) {
    Intent intent = new Intent(this, WclRecorderActivity.class);
    intent.putExtra(WclRecorderActivity.EXTRA_RECORDING_FILE_NAME, fileName());
    startActivityForResult(intent, RECORDING_REQUEST_CODE);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WearManager.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    mWearManager = WearManager.getInstance();

    // we define a listener to inform us of the status of the file transfer
    mWearConsumer = new AbstractWearConsumer() {
        @Override
        public void onWearableSendFileResult(int statusCode, String requestId) {
            Log.d(TAG, String.format("Status Code=%d, requestId=%s", statusCode, requestId));
        }
    };

    mWearManager.addWearConsumer(mWearConsumer);

    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            microphoneButton = (ImageButton) findViewById(R.id.microphoneButton);
            messageButton = (ImageButton) findViewById(R.id.messageButton);
            mProgressBar = (ProgressBar) findViewById(R.id.progressBar);

        }
    });

    checkPermissions();
    mHandler = new Handler();
}

private void checkPermissions() {
    boolean recordAudioPermissionGranted =
            ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
                    == PackageManager.PERMISSION_GRANTED;

    if (recordAudioPermissionGranted) {
        //            microphoneButton.setEnabled(true);
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO},
                PERMISSIONS_REQUEST_CODE);
    }

}

@Override
public void onProgressUpdated(final long progress, final long total) {
    mHandler.post(new Runnable() {
        @Override
        public void run() {
            mProgressBar.setMax((int) total);
            mProgressBar.setProgress((int) progress);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == RECORDING_REQUEST_CODE) {
            int recordingStatus = data.getIntExtra(EXTRA_RECORDING_STATUS, 1);
            if (recordingStatus == 0) {
                String filename = data.getStringExtra(EXTRA_RECORDING_FILE_NAME);
                Log.i("filename", filename);
                sendFile(filename);

            }
        }
    }
}

public void sendFile(String targetName) {
    Set<Node> nodes = mWearManager.getConnectedNodes();

    if (nodes != null && !nodes.isEmpty()) {
        Node targetNode = nodes.iterator().next();
        Log.d(TAG, "Targeting node: " + targetNode);
        File file = new File(getApplicationContext().getFilesDir() + "/" + targetName);
        Log.i("targetname", targetName);
        WearFileTransfer fileTransfer = new WearFileTransfer.Builder(targetNode)
                .setTargetName(targetName)
                .setFile(file)
                .build();
        fileTransfer.startTransfer();
    }
}

String fileName() {
    DateFormat df = new SimpleDateFormat("yyMMddHHmmss");
    String date = df.format(Calendar.getInstance().getTime());
    String name = "audio_message_" + date + ".mp3";
    return name;
}

      

Telephone

public class MainActivity extends AppCompatActivity {
private static final String TAG = "FileTransferFragment";
private WearManager mWearManager;
private WearConsumer mWearConsumer;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WearManager.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);

    setUpWearListeners();

    // register our listeners
    mWearManager.addWearConsumer(mWearConsumer);

}

private void setUpWearListeners() {
    mWearManager = WearManager.getInstance();
    mWearConsumer = new AbstractWearConsumer() {

        @Override
        public void onWearableFileReceivedResult(int statusCode, String requestId,
                                                 File savedFile, String originalName) {
            Log.d(TAG, String.format(
                    "File Received: status=%d, requestId=%s, savedLocation=%s, originalName=%s",
                    statusCode, requestId, savedFile.getAbsolutePath(), originalName));

        }

    };
}

      

Thank you so much!

+3


source to share





All Articles