2017-03-12 10 views
7

मैं त्रुटि नीचे हो रही है जब एपीआई पर एप्लिकेशन चल 16.java.lang.RuntimeException: प्रारंभ नहीं कर सकता विजुअलाइज़र इंजन, त्रुटि: -4

java.lang.RuntimeException: Unable to start activity ComponentInfo{}: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
         at android.app.ActivityThread.access$600(ActivityThread.java:130) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
         at android.os.Handler.dispatchMessage(Handler.java:99) 
         at android.os.Looper.loop(Looper.java:137) 
         at android.app.ActivityThread.main(ActivityThread.java:4745) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:511) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
         at dalvik.system.NativeStart.main(Native Method) 
        Caused by: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4 
         at android.media.audiofx.Visualizer.<init>(Visualizer.java:199) 
         at xyz.activity.AudioPreviewActivity.setupVisualizerFxAndUI(AudioPreviewActivity.java:83) 
         at xyz.activity.AudioPreviewActivity.initAudio(AudioPreviewActivity.java:60) 
         at xyz.activity.AudioPreviewActivity.onCreate(AudioPreviewActivity.java:40) 
         at android.app.Activity.performCreate(Activity.java:5008) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
         at android.app.ActivityThread.access$600(ActivityThread.java:130)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
         at android.os.Handler.dispatchMessage(Handler.java:99)  
         at android.os.Looper.loop(Looper.java:137)  
         at android.app.ActivityThread.main(ActivityThread.java:4745)  
         at java.lang.reflect.Method.invokeNative(Native Method)  
         at java.lang.reflect.Method.invoke(Method.java:511)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
         at dalvik.system.NativeStart.main(Native Method)  

लाइन-

mVisualizer = new Visualizer(mMediaPlayer.getAudioSessionId()); 

कोड

त्रुटि
private void setupVisualizerFxAndUI() { 

    mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath)); 
    mMediaPlayer 
      .setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       public void onCompletion(MediaPlayer mediaPlayer) { 
        mVisualizer.setEnabled(false); 
       } 
      }); 

    mMediaPlayer.start(); 
    mMediaPlayer.setLooping(true); 
    mVisualizer = new Visualizer(mMediaPlayer.getAudioSessionId()); 
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); 
    mVisualizer.setDataCaptureListener(
        new Visualizer.OnDataCaptureListener() { 
         public void onWaveFormDataCapture(Visualizer visualizer, 
                  byte[] bytes, int samplingRate) { 
          mVisualizerView.updateVisualizer(bytes); 
         } 

         public void onFftDataCapture(Visualizer visualizer, 
                byte[] bytes, int samplingRate) { 
         } 
        }, Visualizer.getMaxCaptureRate()/2, true, false); 
     } 

मैंने पहले से ही मेनिफेस्ट-

में अनुमतियों को नीचे जोड़ा है
<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 
+0

mMediaPlayer.getAudioSessionId का मूल्य प्रवेश करें() कृपया mMediaPlayer.getAudioSessionId() की –

+0

@NickCardoso मूल्य 5 –

+0

कि यह की तरह लगता है मान्य होगा है, लेकिन आप एक ही मूल्य हर बार मिल सकता है? ऐसा नहीं है कि मैं –

उत्तर

1

यह संभावना है कि आपके पास विजुअलाइजर के bad in the configuration है, तो अपनी setupVisualizer विधि में सामग्री को दो बार जांचें। कृपया similar issue देखें।

+0

की अपेक्षा करता हूं, यह अन्य संस्करणों के एमुलेटर में काम कर रहा है ... केवल अगर मैं एपीआई 16 के एमुलेटर में जांच करता हूं तो यह –

+0

पर काम नहीं कर रहा है, मैं 'mMediaPlayer = MediaPlayer.create (यह, Uri.parse (filePath)) का उपयोग कर रहा हूं; ' –

3

-4 मतलब है कि आपने एक खराब पैरामीटर दिया है। हालांकि किसी भी राज्य में getAudioSessionId को कॉल किया जा सकता है, क्या आपने मीडियाप्लेयर पर prepare और start कहा है, यह सुनिश्चित करने के लिए कि यह विज़ुअलाइज़ करने का प्रयास करने से पहले एक अच्छी स्थिति है?

तुम भी जब Visualiser इस तरह से और android.permission.INTERNET का उपयोग कर अगर ऑडियो स्रोत स्थानीय नहीं है

+0

मैं' mMediaPlayer.start(); 'और अनुमति भी उपयोग कर रहा हूं .. Mediaplayer कोड के साथ मेरा अद्यतन प्रश्न देखें –

2

एपीआई 23 और इसके बाद के संस्करण के लिए एक क्रम अनुमति जोड़े android.permission.RECORD_AUDIO अनुमति जोड़नी होगी सकता है।

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 

      int hasAudioPermission = checkSelfPermission(Manifest.permission.RECORD_AUDIO); 
      int hasInternetPermission = checkSelfPermission(Manifest.permission.INTERNET); 

      List<String> permissions = new ArrayList<>(); 


     if (hasAudioPermission != PackageManager.PERMISSION_GRANTED) { 
       permissions.add(Manifest.permission.RECORD_AUDIO); 
      } 

      if (hasInternetPermission != PackageManager.PERMISSION_GRANTED) { 
       permissions.add(Manifest.permission.INTERNET); 
      } 

      if (!permissions.isEmpty()) { 
       requestPermissions(permissions.toArray(new String[permissions.size()]), PERMISSION); 
      } 
     } 
संबंधित मुद्दे