从Android Emulator播放歌曲时的静态噪音

如何解决从Android Emulator播放歌曲时的静态噪音

我目前遇到一个问题,当我运行Android Studio时会产生静电噪声。当我导入SeekBar并开始为其输入代码时,就会发生这种情况。我曾尝试调试并安装新的Android Studio版本,但两者均无法正常工作。有人可以帮我吗?

这是我的playSongActivity代码:

    public class PlaySongActivity extends AppCompatActivity {
    private String songId = "";
    private String title = "";
    private String artist = "";
    private String fileLink = "";
    private String coverArt = "";
    private String url = "";
    private MediaPlayer player = null;
    private static final String BASE_URL = "https://p.scdn.co/mp3-preview/";
    private Button playPause = null;
    private int musicPosition = 0;
    TextView duration_played;
    ImageView shuffleBtn;
    ImageView repeatBtn;

    Boolean repeatFlag = false;
    Boolean shuffleFlag = false;

    public  SongCollection songCollection = new SongCollection();
    List<Song> shuffleList = Arrays.asList(songCollection.songs);

    SeekBar seekBar;
    Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play_song);
        duration_played = findViewById(R.id.duration_played);
        retrieveData();
        displaySong();


        repeatBtn = findViewById(R.id.btnRepeat);
        shuffleBtn = findViewById(R.id.shuffle_btn);
        playPause = findViewById(R.id.btnPlayPause);
        seekBar = findViewById(R.id.seekBar);
    }

    private void retrieveData() {
        
        Intent intent = getIntent();

        songId = intent.getStringExtra("id");
        title = intent.getStringExtra("title");
        artist = intent.getStringExtra("artiste");
        fileLink = intent.getStringExtra("fileLink");
        coverArt = intent.getStringExtra("coverArt");

        url = BASE_URL + fileLink;
    }

     private void displaySong() {
       
        TextView txtTitle = findViewById(R.id.tvSongTitle);
        txtTitle.setText(title);

        TextView txtArtiste = findViewById(R.id.tvArtist);
        txtArtiste.setText(artist);

        int imageId = AppUtil.getImageIdFromDrawable(this,coverArt);

        ImageView ivCoverArt = findViewById(R.id.ivCoverArt);
        ivCoverArt.setImageResource(imageId);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void preparePlayer() {

        player = new MediaPlayer();
      
        try {
          
            player.setAudioAttributes(new AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build());

            player.setDataSource(url);
            player.prepare();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void playOrPauseMusic(View view) {
      
        if (player == null) {
            preparePlayer();
        }
        if (!player.isPlaying()) {

            if (musicPosition > 0) {

                player.seekTo(musicPosition);
            }
            UpdateSeekbBar updateSeekbBar = new UpdateSeekbBar();
            seekBar.setOnSeekBarChangeListener(new 
            SeekBar.OnSeekBarChangeListener() {
                @Override
               
                public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser) {
                    player.seekTo(progress);
                    duration_played.setText(createTimerLabel(progress));
                }

                @Override
               
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            });

            preparePlayer();
            player.start();
            seekBar.setMax(player.getDuration());
            handler.post(updateSeekbBar);
            playPause.setText("PAUSE");
            setTitle("Now Playing: " + title + " - " + artist);
            gracefullyStopsWhenMusicEnds();
        } else {
    
            pauseMusic();
            gracefullyStopsWhenMusicEnds();

        }
    }

    private void pauseMusic() {
      
        player.pause();

        musicPosition = player.getCurrentPosition();

        playPause.setText("PLAY");
    }

    private void gracefullyStopsWhenMusicEnds() {
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onCompletion(MediaPlayer mp) {

                stopActivities();
                preparePlayer();
            }
        });
    }

    private void stopActivities() {
        if (player != null) {

            playPause.setText("PLAY");
  
            musicPosition = 0;
 
            setTitle("");
  
            player.stop();
      
            player.release();
        
            player = null;
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void playNext(View view) {
        Song nextSong = songCollection.getNextSong(songId);
        if (nextSong != null) {
            songId = nextSong.getId();
            title = nextSong.getTitle();
            artist = nextSong.getArtist();
            fileLink = nextSong.getFileLink();
            coverArt = nextSong.getCoverArt();
            url = BASE_URL + fileLink;
            displaySong();
            stopActivities();
            playOrPauseMusic(view);
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void playPrev(View view) {
        Song prevSong = songCollection.getPrevSong(songId);
        if (prevSong != null) {
            handler.removeCallbacks(playBar);
            songId = prevSong.getId();
            title = prevSong.getTitle();
            artist = prevSong.getArtist();
            fileLink = prevSong.getFileLink();
            coverArt = prevSong.getCoverArt();
            url = BASE_URL + fileLink;
            displaySong();
            stopActivities();
            playOrPauseMusic(view);
        }
    }

    Runnable playBar = new Runnable() {
        @Override
        public void run() {
            if (player != null && player.isPlaying()) {
                seekBar.setProgress(player.getCurrentPosition());
            }
            handler.postDelayed(this,1000);
        }
    };
    public String createTimerLabel(int duration){
        String timerLabel = "";
        int min = duration /1000/60;
        int sec = duration /1000   ;
        timerLabel += min + ":";
        if (sec<10) timerLabel += "0";
        timerLabel += sec;
        return timerLabel;
    }


    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void repeatSong(View view) {
        if (repeatFlag) {
            repeatBtn.setBackgroundResource(R.drawable.repeat_icon_blue);
          stopActivities();
          playOrPauseMusic(view);
        }
        else {
            repeatBtn.setBackgroundResource(R.drawable.repeat_icon_white);
        }

        repeatFlag = !repeatFlag;
    }

    public void shuffleSong(View view) {
        if (shuffleFlag) {
            shuffleBtn.setBackgroundResource(R.drawable.shuffle_btn_white);
            songCollection = new SongCollection();
        }
        else {
            shuffleBtn.setBackgroundResource(R.drawable.shuffle_btn_blue);
            Collections.shuffle(shuffleList);
            shuffleList.toArray(songCollection.songs);
        }

        shuffleFlag = !shuffleFlag;
    }
    public class UpdateSeekbBar implements Runnable {
        @Override
        public void run() {
            seekBar.setProgress(player.getCurrentPosition());
            handler.postDelayed(this,10);
        }
    }
}

这是我的SongCollection类代码:

    public class SongCollection {
   
    public Song[] songs   = new Song[5];

    public SongCollection() {
        prepareSongs();
    }

    private void prepareSongs() {

        Song Perfect = new Song("S1001","Perfect","Ed Shareen","9779493d90a47f29e4257aa45bc6146d1ee9cb26?cid=2afe87a64b0042dabf51f37318616965",4.39,"edshareen");

        Song MeToo = new Song("S1002","Me too","Meghan trainor","4cb041c7f1c4eb9f5c5ea7cad9b6a11444d49956?cid=2afe87a64b0042dabf51f37318616965",3.02,"meghantrainor_me_too");

        Song Moon = new Song("S1003","Moon","BTS Jin","f4d1590859b7157d448b9b2bdaa73b1f8cefa477?cid=2afe87a64b0042dabf51f37318616965",3.48,"mot7_bts");

        Song Eight = new Song("S1004","Eight","IU","7b68f9603c9269cbd9b6664e7071f0564248a8f7?cid=2afe87a64b0042dabf51f37318616965",2.79,"iu_eight");

        Song WhatYouWaitingFor = new Song("S1005","What you waiting for","Somi","8d14ae5e4ac68893b4e00406ea54ab8bbe6774c4?cid=2afe87a64b0042dabf51f37318616965",2.92,"somi");

        songs[0] = Perfect;
        songs[1] = MeToo;
        songs[2] = Moon;
        songs[3] = Eight;
        songs[4] = WhatYouWaitingFor;
    }

    public Song searchById(String id) {
        Song song = null;
        for (int index = 0; index < songs.length; index++) {
            song = songs[index];
            if (song.getId().equals(id)) {
                return song;
            }
        }
        return null;
    }

    public Song getNextSong(String currentSongId) {
        Song song = null;
        for (int index = 0; index < songs.length; index++) {
            String tempSongId = songs[index].getId();
            if (tempSongId.equals(currentSongId) && (index < songs.length - 1)) {
                song = songs[index + 1];
                break;
            }
        }
        return song;
    }

    public Song getPrevSong(String currentSongId) {
        Song song = null;
        for (int index = 0; index < songs.length; index++) {
            String tempSongId = songs[index].getId();
            if (tempSongId.equals(currentSongId) && (index > 0)) {
                song = songs[index - 1];
                break;
            }
        }
        return song;
    }
}

请让我知道是否有人需要其他信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-