Canardoux / flutter_sound

Flutter plugin for sound. Audio recorder and player.
Mozilla Public License 2.0
850 stars 554 forks source link

[enh] startPlayerFromAsset() #549

Open PunnyBunny opened 3 years ago

PunnyBunny commented 3 years ago

Flutter Sound Version :

|-- flutter_sound 6.4.8+2 | |-- flutter_sound_platform_interface 6.4.8+2 | |-- flutter_sound_web 6.4.8+2 | | |-- flutter_sound_platform_interface...


Severity


Platforms you faced the error

Android real device


Logs

(This is very important. Most of the time we cannot do anything if we do not have information on your bug)

(I have no idea even after searching): E/FlautoPlayer(25600): startPlayer() exception E/flutter (25600): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(ERR_UNKNOWN, ERR_UNKNOWN, startPlayer() error, null) E/flutter (25600): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7) E/flutter (25600): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18) E/flutter (25600): E/flutter (25600): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12) E/flutter (25600): #3 MethodChannelFlutterSoundPlayer.invokeMethod (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:161:21) E/flutter (25600): #4 MethodChannelFlutterSoundPlayer.startPlayer (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:227:14) E/flutter (25600): #5 FlutterSoundPlayer.startPlayer. (package:flutter_sound/public/flutter_sound_player.dart:870:61) E/flutter (25600): E/flutter (25600): #6 FlutterSoundPlayer.startPlayer. (package:flutter_sound/public/flutter_sound_player.dart) E/flutter (25600): #7 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:32:26) E/flutter (25600): #8 FlutterSoundPlayer.startPlayer (package:flutter_sound/public/flutter_sound_player.dart:852:17) E/flutter (25600): #9 SoundManager.playUserAudioButton. (package:quiz/src/sound_manager.dart:95:32) E/flutter (25600): #10 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19) E/flutter (25600): #11 _InkResponseState.build. (package:flutter/src/material/ink_well.dart:1111:38) E/flutter (25600): #12 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24) E/flutter (25600): #13 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11) E/flutter (25600): #14 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5) E/flutter (25600): #15 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:222:7) E/flutter (25600): #16 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:476:9) E/flutter (25600): #17 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:77:12) E/flutter (25600): #18 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:122:9) E/flutter (25600): #19 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8) E/flutter (25600): #20 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18) E/flutter (25600): #21 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7) E/flutter (25600): #22 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:358:19) E/flutter (25600): #23 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22) E/flutter (25600): #24 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11) E/flutter (25600): #25 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7) E/flutter (25600): #26 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7) E/flutter (25600): #27 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7) E/flutter (25600): #28 _rootRunUnary (dart:async/zone.dart:1206:13) E/flutter (25600): #29 _CustomZone.runUnary (dart:async/zone.dart:1100:19) E/flutter (25600): #30 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7) E/flutter (25600): #31 _invoke1 (dart:ui/hooks.dart:265:10) E/flutter (25600): #32 _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)


Screenshots

(If applicable, add screenshots to help explain your problem).


Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the behavior: Compile and run with Android Studio


import 'package:flutter_sound/flutter_sound.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var _audioPlayer = FlutterSoundPlayer();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(child: playUserAudioButton()),
    );
  }

  Widget playUserAudioButton() {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ElevatedButton(
        child: Text('test'),
        onPressed: () async {
          _audioPlayer = await _audioPlayer.openAudioSession();
          await _audioPlayer.startPlayer(fromURI: 'assets/audio/001.mp3');
        },
      ),
    );
  }
}```

**Expected behavior**
A clear and concise description of what you expected to happen.
Play the media file
-----------------------------------------------------------------

## Additional context**
Add any other context about the problem here.
The debug message is so unclear
PunnyBunny commented 3 years ago

The problem is that I loaded the mp3 files from assets, which they don't have an URI for the player to load. Check out #23 for quick solve. I really hope they have a better error message.

Larpoux commented 3 years ago

Yes, this exception is really not clear.

I suggest to do two things :

Please keep this issue open, so that someone will fix that

PunnyBunny commented 3 years ago

Agree.

Larpoux commented 3 years ago

Registered in the Flutter Sound Project

Alvarocda commented 2 years ago

Yes, this exception is really not clear.

I suggest to do two things :

  • A clear error message when the URI is not valid
  • Implement a verb 'startPlayerFromAsset()'

Please keep this issue open, so that someone will fix that

@Larpoux Do you still need someone to do this two things? i can take a look on this if needed

Larpoux commented 2 years ago

Oh YES!!!. I never refuse any help : we have many, many things to do for a better Flutter Sound and we don't have very often Pull Requests.

Actually I am (was) the only active contributor, and I work only part time on Flutter Sound. And I must confess that I am very slow to develop. So things are overflowed.

The verb 'startPlayerFromAsset()' would be a new API procedure. I am currently in the process of forking Flutter Sound into two branches :

The question that you will have to answer is "Do you want to do a Pull Request against the Flutter Sound 8.3 Master branch, or the Tau Sound 9.0 Master branch" ?

Alvarocda commented 2 years ago

I really don't know how to answer this question. What's your recommendation?

Larpoux commented 2 years ago

Ι do not have any recommandation. One of the two main differences is the License. You are the developer. This will be your work. You may decide under which License you want to publish your work. For myself (only myself), I will not be able to maintain two forks and I want to publish all my stuff under the GPL. But this is just my choice.

The other big difference is that Tau Sound 9.0 has a new cleaner API. You must know that there are no more many verbs like :

Instead, we have just a verb "play()", without many important parameters. Before calling play(), the App calls the verb "open()". The verb open has two parameters :

The object "from:" can be for example a : "InputAssetNode". An object "InputAssetNode" will define the path of the asset. Exemple :

InputNode myInputNode = InputAssetNode('foo/bla');
myPlayer.open(from: myInputNode, to: OutputDeviceNode.speaker() );
myPlayer.play();
myPlayer.pause();
myPlayer.resume();
myPlayer.stop();
myPlayer.close();
Alvarocda commented 2 years ago

Ok, i will do my PR to Tau Sound 9.0

Larpoux commented 2 years ago

Yeah! Good choice 👍 . Tau Sound 9.0 is now prety stable. I will change a few things in the API, but nothing like a revolution.

A big thing that is actually missing in Tau Sound 9.0 is the documentation. I started to write it, but this is a painful task for me. I will do a Push of the current documentation tomorrow. The Doc is/will be here.

I do not want to interfere too much in your work. But if you want, I will tell you roughly what can be done.

Thank you so much for your proposition of contribution.

Alvarocda commented 2 years ago

I do not want to interfere too much in your work. But if you want, I will tell you roughly what can be done.

Yes, that will be good.

Thank you so much for your proposition of contribution.

I want to start contributing to open source projects as I believe it's one of the best ways to improve my git, dart, flutter and programming skills and as I've already used this lib on two projects of mine I thought it would be a good place to start contributing.

Larpoux commented 2 years ago

This is fantastic 👍

  1. First thing to do is :

    git clone git@github.com:Canardoux/tau10.git
  2. There are several places where you can load your asset :

    • The constructor of the InputAssetNode class
    • The open() verb of the TauPlayer
    • The play() verb of the TauPlayer

On Flutter Sound 8.3, most of the job was done in play() (startPlayerFromXXX). I think now that it was too late, and better to do most of the job in the open() verb of TauPlayer. But perhaps an even better place is in the InputAssetNode constructor: I do not like too much doing a lot of processing in a constructor, but still, I think that this is the good place.

[Of course you can have other ideas. Just tell me.]

When I defined the new API, I wrote a dummy class InputAssetNode to have a reminder of where to write the code. This class is actually almost empty. It is in the source file tau_sound/lib/public/tau_node, line 124.

If you want to do the loading of the asset in the constructor, you must add a new member in this class to keep the byte buffer. I actually think that you have just to inherit your class InputAssetNode from InputBufferNode.

I suggest that the constructor will have 3 parameters :

(look the class InputBufferNode).

Loading the asset is very simple. You can look to the demo example, or some of the basic examples in directory : tau_sound/example/lib

Don't be afraid by this post. Everything is very simple and you will not have any difficulty. The problem is that I am a bad teacher and I have a very, very bad english.

Alvarocda commented 2 years ago

So I cloned the repository, created a flutter project and added the dependency using the static path. However, when running the project I'm using to test, it presents me with some errors.

The first time I tried it, it gave me the following error:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/alvarocda/development/alvaro/tau10/tau_sound/android/build.gradle' line: 57

* What went wrong:
A problem occurred evaluating project ':tau_sound'.
> Project with path ':tau_native' could not be found in project ':tau_sound'.

I went into that file and commented out this line (line 57).

Then I tried to compile again and my console was full of errors.

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundSession.java:28: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.*;
^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundSession.java:29: error: package xyz.canardoux.TauNative.Flauto does not exist
import xyz.canardoux.TauNative.Flauto.t_LOG_LEVEL;
                                     ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundSession.java:110: error: package xyz.canardoux.TauNative.Flauto does not exist
    public void log(xyz.canardoux.TauNative.Flauto.t_LOG_LEVEL level, String msg)
                                                  ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:29: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.Flauto;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:28: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.*;
^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:29: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.FlautoTrack;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:30: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.FlautoTrackPlayer;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:31: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.FlautoPlayerCallback;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:32: error: package xyz.canardoux.TauNative.Flauto does not exist
import xyz.canardoux.TauNative.Flauto.*;
^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:35: error: cannot find symbol
public class TauSoundPlayer extends TauSoundSession implements  FlautoPlayerCallback
                                                                ^
  symbol: class FlautoPlayerCallback
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:44: error: cannot find symbol
    FlautoPlayer m_flautoPlayer;
    ^
  symbol:   class FlautoPlayer
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:123: error: cannot find symbol
    public void updatePlaybackState(t_PLAYER_STATE newState)
                                    ^
  symbol:   class t_PLAYER_STATE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:31: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.*;
^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:32: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.FlautoRecorder;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:33: error: package xyz.canardoux.TauNative does not exist
import xyz.canardoux.TauNative.Flauto;
                              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:34: error: package xyz.canardoux.TauNative.Flauto does not exist
import xyz.canardoux.TauNative.Flauto.*;
^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:37: error: cannot find symbol
public class TauSoundRecorder extends TauSoundSession implements FlautoRecorderCallback
                                                                 ^
  symbol: class FlautoRecorderCallback
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:43: error: cannot find symbol
    FlautoRecorder m_recorder;
    ^
  symbol:   class FlautoRecorder
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:57: error: cannot find symbol
        Flauto.androidContext = registrar.context ();
        ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:58: error: cannot find symbol
        Flauto.androidActivity = registrar.activity ();
        ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:60: error: cannot find symbol
        TauSoundPlayerManager.attachFlautoPlayer ( Flauto.androidContext, registrar.messenger () );
                                                   ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:61: error: cannot find symbol
        TauSoundRecorderManager.attachFlautoRecorder ( Flauto.androidContext, registrar.messenger ()  );
                                                       ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:96: error: cannot find symbol
        Flauto.androidActivity = binding.getActivity ();
        ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:99: error: cannot find symbol
        Flauto.androidContext = pluginBinding.getApplicationContext ();
        ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:100: error: cannot find symbol
        TauSoundPlayerManager.attachFlautoPlayer ( Flauto.androidContext, pluginBinding.getBinaryMessenger () );
                                                   ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java:101: error: cannot find symbol
        TauSoundRecorderManager.attachFlautoRecorder ( Flauto.androidContext, pluginBinding.getBinaryMessenger () );
                                                       ^
  symbol:   variable Flauto
  location: class TauSound
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:136: error: cannot find symbol
            m_flautoPlayer = new FlautoTrackPlayer(this);
                                 ^
  symbol:   class FlautoTrackPlayer
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:139: error: cannot find symbol
            m_flautoPlayer = new FlautoPlayer(this);
                                 ^
  symbol:   class FlautoPlayer
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:157: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
        ^
  symbol:   class t_AUDIO_FOCUS
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:157: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
                              ^
  symbol:   variable t_AUDIO_FOCUS
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:159: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
        ^
  symbol:   class t_SESSION_CATEGORY
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:159: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
                                      ^
  symbol:   variable t_SESSION_CATEGORY
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:161: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
        ^
  symbol:   class t_SESSION_MODE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:161: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
                              ^
  symbol:   variable t_SESSION_MODE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:163: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
        ^
  symbol:   class t_AUDIO_DEVICE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:163: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
                                     ^
  symbol:   variable t_AUDIO_DEVICE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:223: error: cannot find symbol
            log(t_LOG_LEVEL.ERROR, "startPlayerFromMic() exception");
                ^
  symbol:   variable t_LOG_LEVEL
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:231: error: cannot find symbol
        t_CODEC codec = t_CODEC.values()[(_codec != null) ? _codec : 0];
        ^
  symbol:   class t_CODEC
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:231: error: cannot find symbol
        t_CODEC codec = t_CODEC.values()[(_codec != null) ? _codec : 0];
                        ^
  symbol:   variable t_CODEC
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:257: error: cannot find symbol
            log(t_LOG_LEVEL.ERROR,  "startPlayer() exception");
                ^
  symbol:   variable t_LOG_LEVEL
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:273: error: cannot find symbol
            log(t_LOG_LEVEL.ERROR,  "feed() exception" );
                ^
  symbol:   variable t_LOG_LEVEL
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:282: error: cannot find symbol
        final FlautoTrack track = new FlautoTrack( trackMap );
              ^
  symbol:   class FlautoTrack
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:282: error: cannot find symbol
        final FlautoTrack track = new FlautoTrack( trackMap );
                                      ^
  symbol:   class FlautoTrack
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:320: error: cannot find symbol
        boolean b      = m_flautoPlayer.isDecoderSupported(t_CODEC.values()[_codec]);
                                                           ^
  symbol:   variable t_CODEC
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:336: error: cannot find symbol
            log(t_LOG_LEVEL.ERROR, "pausePlay exception: " + e.getMessage () );
                ^
  symbol:   variable t_LOG_LEVEL
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:353: error: cannot find symbol
            log(t_LOG_LEVEL.ERROR, "mediaPlayer resume: " + e.getMessage () );
                ^
  symbol:   variable t_LOG_LEVEL
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:456: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
        ^
  symbol:   class t_AUDIO_FOCUS
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:456: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
                              ^
  symbol:   variable t_AUDIO_FOCUS
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:458: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
        ^
  symbol:   class t_SESSION_CATEGORY
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:458: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
                                      ^
  symbol:   variable t_SESSION_CATEGORY
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:460: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
        ^
  symbol:   class t_SESSION_MODE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:460: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
                              ^
  symbol:   variable t_SESSION_MODE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:462: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
        ^
  symbol:   class t_AUDIO_DEVICE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundPlayer.java:462: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
                                     ^
  symbol:   variable t_AUDIO_DEVICE
  location: class TauSoundPlayer
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:99: error: cannot find symbol
        m_recorder = new FlautoRecorder(this);
                         ^
  symbol:   class FlautoRecorder
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:114: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
        ^
  symbol:   class t_AUDIO_FOCUS
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:114: error: cannot find symbol
        t_AUDIO_FOCUS focus = t_AUDIO_FOCUS.values()[x1];
                              ^
  symbol:   variable t_AUDIO_FOCUS
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:116: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
        ^
  symbol:   class t_SESSION_CATEGORY
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:116: error: cannot find symbol
        t_SESSION_CATEGORY category = t_SESSION_CATEGORY.values()[x2];
                                      ^
  symbol:   variable t_SESSION_CATEGORY
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:118: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
        ^
  symbol:   class t_SESSION_MODE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:118: error: cannot find symbol
        t_SESSION_MODE mode = t_SESSION_MODE.values()[x3];
                              ^
  symbol:   variable t_SESSION_MODE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:120: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
        ^
  symbol:   class t_AUDIO_DEVICE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:120: error: cannot find symbol
        t_AUDIO_DEVICE audioDevice = t_AUDIO_DEVICE.values()[x4];
                                     ^
  symbol:   variable t_AUDIO_DEVICE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:157: error: cannot find symbol
        boolean b      = m_recorder.isEncoderSupported(t_CODEC.values()[_codec]);
                                                       ^
  symbol:   variable t_CODEC
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:254: error: cannot find symbol
            t_CODEC                     codec               = t_CODEC.values()[ _codec ];
            ^
  symbol:   class t_CODEC
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:254: error: cannot find symbol
            t_CODEC                     codec               = t_CODEC.values()[ _codec ];
                                                              ^
  symbol:   variable t_CODEC
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:257: error: cannot find symbol
            t_AUDIO_SOURCE                  audioSource         = t_AUDIO_SOURCE.values()[_audioSource];
            ^
  symbol:   class t_AUDIO_SOURCE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:257: error: cannot find symbol
            t_AUDIO_SOURCE                  audioSource         = t_AUDIO_SOURCE.values()[_audioSource];
                                                                  ^
  symbol:   variable t_AUDIO_SOURCE
  location: class TauSoundRecorder
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:306: error: package Flauto does not exist
        Flauto.t_AUDIO_FOCUS focus = Flauto.t_AUDIO_FOCUS.values()[x1];
              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:306: error: package Flauto does not exist
        Flauto.t_AUDIO_FOCUS focus = Flauto.t_AUDIO_FOCUS.values()[x1];
                                           ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:308: error: package Flauto does not exist
        Flauto.t_SESSION_CATEGORY category = Flauto.t_SESSION_CATEGORY.values()[x2];
              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:308: error: package Flauto does not exist
        Flauto.t_SESSION_CATEGORY category = Flauto.t_SESSION_CATEGORY.values()[x2];
                                                   ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:310: error: package Flauto does not exist
        Flauto.t_SESSION_MODE mode = Flauto.t_SESSION_MODE.values()[x3];
              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:310: error: package Flauto does not exist
        Flauto.t_SESSION_MODE mode = Flauto.t_SESSION_MODE.values()[x3];
                                           ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:312: error: package Flauto does not exist
        Flauto.t_AUDIO_DEVICE audioDevice = Flauto.t_AUDIO_DEVICE.values()[x4];
              ^
/home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSoundRecorder.java:312: error: package Flauto does not exist
        Flauto.t_AUDIO_DEVICE audioDevice = Flauto.t_AUDIO_DEVICE.values()[x4];
                                                  ^
Note: /home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/src/main/java/xyz/canardoux/tausound/TauSound.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
76 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':tau_sound:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 39s
Exception: Gradle task assembleDebug failed with exit code 1

So, I went back to this file /home/alvarocda/desenvolvimento/alvaro/tau10/tau_sound/android/build.gradle and noticed that under line 57 there was another commented line of implementation, I uncommented this line (line 58) and the project started to run normally.

Is that so or did I do something wrong?

Larpoux commented 2 years ago

👍 @Alvarocda . This was my fault. I forgot to tell you that Tau Sound has a git subproject : tau_native

If you look to this diagram you can see that the τ project is architectured with 3 layers. Actually, your development of "Play from Asset" will impact only the High level in Dart (Platform Support). So the change the two lines of build.gradle is OK. If you will want to do other developments in the future, then I will explain you how to develop in the Low level.

Sorry for not having told you. Congratulation to have found yourself how to fix your issue.

huanlirui commented 2 years ago

How to play the local audio of the project. It's like using local pictures ??

github-actions[bot] commented 6 months ago

This issue is stale because it has been open 90 days with no activity. Leave a comment or this will be closed in 7 days.