I made an app that tests the speakers in an HTC phone.  it tests both the 
bottom speaker, the top speaker, and the headphones, all while the 
headphones are plugged in.  It works perfectly in the HTC Desire Eye that 
is running KitKat 4.4.4, but it does not work correctly on the HTC Desire 
that is running Lollypop 5.1.  In the lollypop phone, it only plays from 
the bottom speaker, and if the headphones are plugged in, it goes through 
the headphones instead.  I have been looking everywhere but cant find the 
answer.  Does anyone know what I should do to make my app work in 
Lollypop?  I have included the code in case you see some deprecated code 
that I should update.  Also, the app does not crash on Lollypop, just does 
the audiomanager or mediaplayer doesn't work the correctly.  Thanks so much.

    public class LeftSpeakerActivity extends Activity {
        int default_mode; //Saves the default mode of the device
        int music_volume; //Saves the default volume of the music stream
        int call_volume; //Saves the default volume of the in call stream
        String device_type = null;//Stores the device type
        AudioManager audioManager; //Object to provide access to system 
volume controls and settings
        String model = android.os.Build.MODEL;
        String Manufacturer = android.os.Build.MANUFACTURER;
        boolean isNexus = false;
        TextView title_text;
        MediaPlayer mp;
        //preset volume
        int volume = 10;
        public final static String log_tag = "LeftSpeaker";
    
        Handler mHandler = new Handler();
        /*
        * (non-Javadoc)
        * @see android.app.Activity#onCreate(android.os.Bundle).
        * First function entered when the application is created
        * This function is used to initialize the layout and the device type
        * based on the model and device Manufacturer.This function also 
stores
        * the default audio stream value and modes to reset it back to these
        * values once we exit the application
        */
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            /*
             * API's to launch the application when the tablet is locked or
             * display is turned off
             */
            
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
            
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
            
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    //        
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
            setContentView(R.layout.activity_left_speaker);
    
    
            title_text = ((TextView) findViewById(R.id.textView3));
            title_text.setTextColor(Color.RED);
            title_text.setText("LEFT SPEAKER TEST IN PROGRESS" + "\n" + 
"VOLUME IS SET AT" + volume);
            Context mContext = getApplicationContext();
            createTempFile("Status_LeftSpeaker.txt", "INPROGRESS");
    
            audioManager = (AudioManager) 
getSystemService(Context.AUDIO_SERVICE);
            default_mode = audioManager.getMode();
            music_volume = 
audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
            call_volume = 
audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
    
            //Setting the volume level
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,volume, 
AudioManager.FLAG_SHOW_UI);
            audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 
volume, AudioManager.FLAG_SHOW_UI);
            audioManager.setSpeakerphoneOn(true);
    
            //start_playing();
            playSound(true);
    
        }
        //TRUE PLAYS OVER SPEAKERS
        private void playSound(boolean speakers){
    
            mp = MediaPlayer.create(getApplicationContext(), 
R.raw.tone_right);
            if (speakers){
                mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
    
            }else {
                mp.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
    
            }
            mp.start();
            mp.setOnCompletionListener(new 
MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    createTempFile("Status_LeftSpeaker.txt", "COMPLETED");
                    exit_function();
                }
            });
        }
    
    
        private void exit_function() {
            onDestroy();
        }
    
        @Override
        /*
         * (non-Javadoc)
         * @see android.app.Activity#onDestroy()
         * Function invoked before we exit the application . Reset all the 
volume
         * and stream values in this function
         */
        protected void onDestroy() {
            Log.i(log_tag,"Entered onDestroy()");
            super.onDestroy();
            //mp.reset();
            if (mp != null) {
                mp.release();
            }
            //Reset to the default settings here
            audioManager.setMode(default_mode);
    
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 
music_volume, AudioManager.FLAG_SHOW_UI);
            audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 
call_volume, AudioManager.FLAG_SHOW_UI);
    
            this.finish();
    
        }
    
        /*
         * Function to create the a text file in the application directory 
context. This function
         * takes the file name and the string that is to be written in it 
as the input. This function is invoked
         * to create the Result.txt file.
         */
        private void createTempFile(String filename, String text) {
    
            try {
                FileOutputStream fOut = openFileOutput(filename , 
MODE_WORLD_READABLE);
                OutputStreamWriter osw = new OutputStreamWriter(fOut);
                osw.write(text);
                osw.flush();
                osw.close();
    
            } catch(IOException e) {
                e.printStackTrace();
            }
    
        }
    
    
    }






-- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
To post to this group, send email to android-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-developers/d120db29-97d4-4d6b-a5f6-247d2bd93269%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to