版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 PAGE47 / NUMPAGES48基于Android系統(tǒng)的音樂播放器設(shè)計(jì)與實(shí)現(xiàn)源程序.ProjectspMusicPlayer01.android.ide.eclipse.adt.ResourceManagerBuilder.android.ide.eclipse.adt.PreCompilerBuilderorg.eclipse.jdt.core.javabuilder.android.ide.eclipse.adt.ApkBuilder.android.ide.eclipse.adt.AndroidNatureorg.eclipse.jdt.core.javanature.class
2、pathAndroidManifest.xml LocalMpsList.javapackage sled.develop;import java.util.ArrayList;import java.util.List;import sled.develop.service.ListSrv;import sled.model.MpsIterm;import sled.utils.AdapterUtils;import sled.utils.AppConstant;import sled.utils.FileUtils;import android.app.ListActivity;impor
3、t android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.Window;import android.widget.ListView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.SimpleAdapter;public
4、class LocalMpsList extends ListActivityprivate List mp3s =null;private RadioGroup radiogroup ; private RadioButton single ;private RadioButton order ;private RadioButton radom ;private int mode = AppConstant.JUMP_MODE_ORDER ;Overrideprotected void onCreate(Bundle savedInstanceState) / TODO Auto-gene
5、rated method stubsuper.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.locallist);single = (RadioButton)findViewById(R.id.single);order = (RadioButton)findViewById(R.id.order);radom = (RadioButton)findViewById(R.id.radom);radiogroup = (RadioGroup)fi
6、ndViewById(R.id.menu);radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener() Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) / TODO Auto-generated method stubif(checkedId = single.getId()mode = AppConstant.JUMP_MODE_SINGLE;else if(checkedId = order.getId()mode = Ap
7、pConstant.JUMP_MODE_ORDER;else if(checkedId = radom.getId()mode = AppConstant.JUMP_MODE_RADOM;);Overrideprotected void onListItemClick(ListView l, View v, int position, long id) / TODO Auto-generated method stubsuper.onListItemClick(l, v, position, id);/MpsIterm mp3=mp3s.get(position);Intent preinte
8、nt = new Intent();preintent.putExtra(position, position);preintent.putExtra(cmd, AppConstant.JUMP_CMD_PREPARE);preintent.putExtra(mode, mode);preintent.setClass(LocalMpsList.this, ListSrv.class);startService(preintent);/*Intent intent=new Intent();intent.putExtra(mp3, mp3);intent.setClass(this, MpsP
9、layer.class);startActivity(intent);*/onStop();Overrideprotected void onResume() / TODO Auto-generated method stubsuper.onResume();updateListView();Overrideprotected void onStop() / TODO Auto-generated method stubsuper.onStop();finish();private void updateListView()FileUtils fileUtils=new FileUtils()
10、;mp3s=fileUtils.getMp3Files(mp3);if (mp3s=null)/如果本地目錄找不到Mp3文件mp3s=new ArrayList();MpsIterm mp3=new MpsIterm();mp3.setName_mp3(沒有Mp3文件!);mp3.setSize_mp3(0);mp3s.add(mp3);AdapterUtils au=new AdapterUtils(this,R.layout.mp3info_item,mp3s);SimpleAdapter simpleAdapter=au.buildSimpleAdapter();setListAdapt
11、er(simpleAdapter);ItrActivity.javapackage sled.develop;import android.app.Activity;import android.os.Bundle;public class ItrActivity extends ActivityOverrideprotected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.
12、introduction);Overrideprotected void onStop() / TODO Auto-generated method stubsuper.onStop();finish();MpsPlayer.javapackage sled.develop;import sled.develop.service.ListSrv;import sled.develop.service.PlayerSrv;import sled.utils.AppConstant;import android.app.Activity;import android.content.Broadca
13、stReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.AudioManager;import android.os.Bundle;import android.os.Handler;import android.view.Menu;import androi
14、d.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.SeekBar;import android.widget.TextView;public class MpsPlayer e
15、xtends Activity implements AppConstant private AudioManager am = null ;private IntentFilter intentFilter=null;private BroadcastReceiver receiver=null;private Intent playIntent=null;private Intent intentnext = null ;private Thread t = null ;private LinearLayout ll = null;private ImageButton last_btn
16、= null ;private ImageButton pause_btn = null ;private ImageButton play_btn = null ;private ImageButton next_btn = null ;private ImageButton list_btn = null ;private SeekBar seekbar = null ;private TextView time_view = null ;private TextView lrc_view = null ;private TextView mp3info_view = null ;priv
17、ate ImageView song_img = null ;private ImageView volbar = null ;private ImageView logo = null ;private int SysMaxVolume , CurVolume;private int vol_id = R.drawable.vol_0,R.drawable.vol_1,R.drawable.vol_2,R.drawable.vol_3,R.drawable.vol_4,R.drawable.vol_5,R.drawable.vol_6,R.drawable.vol_7;private int
18、 logo_id = R.drawable.logo_0,R.drawable.logo_1,R.drawable.logo_2,;int logo_index = 0 ;float downX = 0 ;float downY = 0 ;float upX = 0 ;float upY = 0 ;float relateX ;float relateY ;long tempT = 0 ;long downT = 0 ;long moveT = 0 ;long upT = 0 ;private float CLICK_POINTOR = 80 ;/int count = 0 ;Override
19、protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);ll = (LinearLayout)findViewById(R.id.control_view);last_btn = (ImageButton)findViewById(R.id.last);last_btn.setOnClickListener(new LastOnclickListener();pause_btn = (ImageButton)findVi
20、ewById(R.id.pause);pause_btn.setOnClickListener(new PauseOnclickListener();play_btn = (ImageButton)findViewById(R.id.play);play_btn.setOnClickListener(new PlayOnclickListener();next_btn = (ImageButton)findViewById(R.id.next);next_btn.setOnClickListener(new NextOnclickListener();list_btn = (ImageButt
21、on)findViewById(R.id.list);list_btn.setOnClickListener(new ListOnclickListener();seekbar = (SeekBar)findViewById(R.gressbar);seekbar.setOnSeekBarChangeListener(new SeekBarListener();time_view = (TextView)findViewById(R.id.timeview);lrc_view = (TextView)findViewById(R.id.lrcview);mp3info_view =
22、 (TextView)findViewById(R.id.mp3_info);song_img = (ImageView)findViewById(R.id.img_of_the_song);volbar = (ImageView)findViewById(R.id.volfasebar);logo = (ImageView)findViewById(R.id.logo);Overrideprotected void onResume() super.onResume();am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);Sy
23、sMaxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);receiver=new LrcMessBroadcastReceiver();/兩個(gè)參數(shù),一個(gè)是指明操作,一個(gè)是指明過濾registerReceiver(receiver,getIntentFilter();initPlayerSrv();initListSrv();dosomething(null,null);Override public boolean onCreateOptionsMenu(Menu menu) / TODO Auto-generated met
24、hod stub menu.add(0, 1, 1, 操作說明); menu.add(0, 2, 2, 完全退出); return super.onCreateOptionsMenu(menu); Override public boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stub if(item.getItemId() = 1) Intent tintent = new Intent(); tintent.setClass(MpsPlayer.this, ItrActivity.class
25、); startActivity(tintent); else if(item.getItemId() = 2) stopService(playIntent); stopService(intentnext); finish(); return true; Overrideprotected void onRestart() super.onRestart();protected void onPause() super.onPause();unregisterReceiver(receiver);/一些基本布局public void dosomething(String mp3info,S
26、tring img)Bitmap bm ;if(mp3info = null | img = null )mp3info = NO MUSIC SELECTED;song_img.setImageResource(R.drawable.logo_0);mp3info_view.setText(mp3info);else/System.out.println(img);mp3info = 當(dāng)前播放: + mp3info;bm = BitmapFactory.decodeFile(/sdcard/mp3/img/ + img);if(bm = null)song_img.setImageResou
27、rce(R.drawable.logo_0);elsesong_img.setImageBitmap(bm);mp3info_view.setText(mp3info);/* * 一些按鈕和進(jìn)度條的監(jiān)聽方法 * author Administrator * */class LastOnclickListener implements OnClickListenerOverridepublic void onClick(View v) lastMusic();class PauseOnclickListener implements OnClickListenerOverridepublic v
28、oid onClick(View v) pauseMp3();/t.start();class PlayOnclickListener implements OnClickListenerOverridepublic void onClick(View v) initPlayerSrv();playMp3();class NextOnclickListener implements OnClickListenerOverridepublic void onClick(View v) nextMusic();public void initListSrv()intentnext = new In
29、tent();intentnext.setClass(MpsPlayer.this, ListSrv.class);public void nextMusic()intentnext.putExtra(cmd, AppConstant.JUMP_CMD_NEXT);startService(intentnext);public void lastMusic()Intent intentnext = new Intent();intentnext.putExtra(cmd, AppConstant.JUMP_CMD_LAST);intentnext.setClass(MpsPlayer.this
30、, ListSrv.class);startService(intentnext);class SeekBarListener implements SeekBar.OnSeekBarChangeListener/進(jìn)度條事件響應(yīng)public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) public void onStartTrackingTouch(SeekBar arg0) public void onStopTrackingTouch(SeekBar arg0) if (seekbar.getMax() 0)/是
31、一次點(diǎn)擊事件if(Math.abs(relateX) = CLICK_POINTOR & Math.abs(relateY) 500)Intent intent = new Intent();intent.setClass(MpsPlayer.this, LocalMpsList.class);startActivity(intent);elsell.setVisibility(View.VISIBLE);t = new Thread(tr);t.start();else if(Math.abs(relateX) Math.abs(relateY)if(downX upX)nextMusic(
32、);else if(downX upX)lastMusic();else if(Math.abs(relateX) Math.abs(relateY)if(downY upY)turnvol(AudioManager.ADJUST_RAISE);upT = -1 ;/upX = upY = 0 ;return super.onTouchEvent(event);/代碼復(fù)用,關(guān)于音量調(diào)節(jié)public void turnvol(int value)am.adjustStreamVolume (AudioManager.STREAM_MUSIC, value,0);CurVolume = am.ge
33、tStreamVolume(AudioManager.STREAM_MUSIC);int num_pic = (7*CurVolume)/SysMaxVolume ;volbar.setImageResource(vol_idnum_pic);volbar.setVisibility(View.VISIBLE);Thread thread = new Thread(tv);thread.start();/* * 音量條延遲線程 */Handler vhandler = new Handler();Runnable tv = new Runnable()Overridepublic void r
34、un() try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace();vhandler.post(vr);Runnable vr = new Runnable()Overridepublic void run() volbar.setVisibility(View.GONE);/* * 進(jìn)度條等按鈕延遲線程 */Handler handler = new Handler();Runnable tr = new Runnable()Overridepublic void run() try Thread.s
35、leep(5000); catch (InterruptedException e) e.printStackTrace();handler.post(r);Runnable r = new Runnable() Overridepublic void run() ll.setVisibility(View.GONE);ListSrv.javapackage sled.develop.service;import java.util.ArrayList;import java.util.Random;import sled.model.MpsIterm;import sled.utils.Ap
36、pConstant;import sled.utils.FileUtils;import android.app.Service;import android.content.Intent;import android.os.IBinder;public class ListSrv extends Service implements AppConstantprivate FileUtils files ;private Intent intentplay = null ;private MpsIterm mp3_next = null ;private MpsIterm mp3_last =
37、 null ;private int cmd = AppConstant.JUMP_CMD_PREPARE;private int mode = AppConstant.JUMP_MODE_ORDER ;private int position = -1 ;private int nextp = 0 ;private int lastp = 0 ;private ArrayList list = null ;Overridepublic IBinder onBind(Intent intent) / TODO Auto-generated method stubreturn null;Over
38、ridepublic void onDestroy() / TODO Auto-generated method stubsuper.onDestroy();Overridepublic int onStartCommand(Intent intent, int flags, int startId) / TODO Auto-generated method stubcmd = intent.getIntExtra(cmd, AppConstant.JUMP_CMD_PREPARE);switch(cmd)case AppConstant.JUMP_CMD_PREPARE:files = ne
39、w FileUtils();list = (ArrayList)files.getMp3Files(mp3);mode = intent.getIntExtra(mode, AppConstant.JUMP_MODE_ORDER);/System.out.println(+ mode);position = intent.getIntExtra(position, position);initPlayerSrv();intentplay.putExtra(mp3, list.get(position);startService(intentplay);whatsnext(mode,positi
40、on);break;case AppConstant.JUMP_CMD_NEXT:if(position 0)return 0;initPlayerSrv();intentplay.putExtra(mp3, mp3_next);startService(intentplay);position = nextp ;whatsnext(mode,position);break;case AppConstant.JUMP_CMD_LAST:if(position list.size() - 1 )nextp = 0 ;if( lastp 停止 + mp3.getName_mp3()+ 的PlayS
41、rv!);stop();mp3=null;mp=null;mediaStatus=AppConstant.MEDIA_STATUS_UNLOAD;mediaCmd=AppConstant.MEDIA_CMD_STOP;super.onDestroy();Overridepublic int onStartCommand(Intent intent, int flags, int startId) / TODO Auto-generated method stubstartTime=intent.getIntExtra(startTime, 0);MpsIterm mp3InfoNew=(Mps
42、Iterm) intent.getSerializableExtra(mp3);/判斷Activity傳過來的 mp3Name 是否同一個(gè),不同則停止原有的,再啟動新的播放.if (mp3!=null & mp3InfoNew != null)String str1=mp3.getName_mp3();String str2=mp3InfoNew.getName_mp3();boolean isEqual=str1.equals(str2);if (!isEqual)stop();if(mp3InfoNew != null)mp3=mp3InfoNew;if(mp3 = null)return
43、 0 ;mp3info = mp3.getName_mp3();img = mp3.getName_img();mediaCmd=intent.getIntExtra(mediaCmd, AppConstant.MEDIA_CMD_PLAY);if (mediaCmd=AppConstant.MEDIA_CMD_PLAY)play();else if (mediaCmd=AppConstant.MEDIA_CMD_PAUSE)pause();else if (mediaCmd=AppConstant.MEDIA_CMD_GOTO)stop();mediaStatus = AppConstant
44、.MEDIA_STATUS_RELEASED;currLrcIndex = 0 ;play();else if (mediaCmd=AppConstant.MEDIA_CMD_SEEKTO)seekto();else if (mediaCmd=AppConstant.MEDIA_CMD_STOP)stop();return super.onStartCommand(intent, flags, startId);/播放器操作private void play()boolean isMtach=true;if (mediaStatus=AppConstant.MEDIA_STATUS_UNLOA
45、D) | (mediaStatus=AppConstant.MEDIA_STATUS_RELEASED)isMtach= initMediaPlayerAndLrc();else if(mediaStatus=AppConstant.MEDIA_STATUS_PLAYING)isMtach=false;/通知Activity設(shè)置進(jìn)度條,因?yàn)锳CT中SeekBar在mp3player.xml里面,max的值配置為0,totalTimeTxt也是配置為零./因此在同一首歌的播放中,退出Mp3PlayerActivity后又重新回到Mp3PlayerActivity的時(shí)候,因?yàn)镸p3PlayerAc
46、tivity的onCreate/事件中,調(diào)用setContentView設(shè)置SeekBar和totalTimeTxt為mp3player里面的值,即為0,所以需要在這里手工設(shè)置一下.sendBroadcastToAct(AppConstant.UI_CMD_INITPROGRESSBAR,0,mp.getDuration();if (isMtach)mp.start();/if(updateTimeCallback=null)/sendBroadcastToAct(AppConstant.UI_CMD_UPDATELRC,找不到歌詞文件!,0,0);/elsehandler.post(upda
47、teTimeCallback);/mediaStatus=AppConstant.MEDIA_STATUS_PLAYING;handler.postDelayed(updateTimeCallback, 5);private void pause()if (mediaStatus=AppConstant.MEDIA_STATUS_PLAYING) mp.pause();mediaStatus=AppConstant.MEDIA_STATUS_PAUSE;else if(mediaStatus=AppConstant.MEDIA_STATUS_PAUSE)mp.start();mediaStat
48、us=AppConstant.MEDIA_STATUS_PLAYING;private void seekto()if (mp=null)return;if (startTime=0) return;/歌詞數(shù)組的索引號從0開始查找currLrcIndex=0;mp.seekTo(startTime);/play();mp.start();startTime=0;return ;private void stop()if (mediaStatus=AppConstant.MEDIA_STATUS_PLAYING) | (mediaStatus=AppConstant.MEDIA_STATUS_P
49、AUSE)/nu.viewNotification(mp3.getName_mp3() + 停 止!, mp3.getName_mp3() + 停止!, R.drawable.icon);handler.removeCallbacks(updateTimeCallback);mp.stop();mp.release();mediaStatus=AppConstant.MEDIA_STATUS_RELEASED;/發(fā)送通知,清除播放信息(歌詞,進(jìn)度條)sendBroadcastToAct(AppConstant.UI_CMD_CLEARPLAYINFO,0,0);/自定義函數(shù)(1):設(shè)置Medi
50、aPlayerprivate boolean initMediaPlayerAndLrc()String SDPath=Environment.getExternalStorageDirectory().getAbsolutePath();String mp3Path=SDPath +/mp3/ + mp3.getName_mp3();prepareLrc(mp3.getName_lrc();updateTimeCallback = new UpdateTimeCallback();/要用MediaPlayer.create 而不是 mp.createmp=MediaPlayer.create
51、(PlayerSrv.this, Uri.parse(file:/ + mp3Path);mp.setLooping(false);handler=new Handler(); /顯示歌詞用的handler/通知Activity設(shè)置進(jìn)度條sendBroadcastToAct(AppConstant.UI_CMD_INITPROGRESSBAR,0,mp.getDuration();return true;/自定義函數(shù)(2):準(zhǔn)備歌詞private void prepareLrc(String lrcName)tryString SDPath=Environment.getExternalSto
52、rageDirectory().getAbsolutePath();String lrcPath=SDPath +/mp3/lrc/ + lrcName;InputStream inputStream=new FileInputStream(lrcPath);LrcPrcsUtils lrcProcessor=new LrcPrcsUtils();lrcPcess(inputStream);arrMessages=lrcProcessor.getArrMsgs();arrTimes=lrcProcessor.getArrTimes();/updateTimeCallba
53、ck = new UpdateTimeCallback();/nextTimeMill =0;catch(FileNotFoundException e) e.printStackTrace();return ;/自定義函數(shù)(3):發(fā)送廣播private void sendBroadcastToAct(int uiCmd,String lrcMess,long currTime,int duration)Intent broadcastIntent=new Intent();if (uiCmd=0)return;broadcastIntent.setAction(AppConstant.LRC
54、_MESSAGE_ACTION);broadcastIntent.putExtra(uiCmd, uiCmd);if (lrcMess!=null) broadcastIntent.putExtra(lrcMess,lrcMess);if (currTime0) broadcastIntent.putExtra(currPos, currTime);if (duration0) broadcastIntent.putExtra(duration,duration);if (mp3info != null) broadcastIntent.putExtra(mp3info, mp3info);i
55、f (img != null ) broadcastIntent.putExtra(img, img);sendBroadcast(broadcastIntent);return;class UpdateTimeCallback implements Runnablepublic UpdateTimeCallback() super();public void run() / TODO Auto-generated method stubtry/直接用MediaPlayer中的變量得到播方時(shí)間Long offset=(long) mp.getCurrentPosition();boolean
56、isMatch =false;if(arrMessages != null)if (currLrcIndex=0) /當(dāng)歌詞數(shù)組索引號為0時(shí),顯示與播放時(shí)間最接近的歌詞.for (int i = currLrcIndex; i = offset)currLrcIndex=i;isMatch=true;System.out.println(here is working);break;else for (int i = currLrcIndex; i offset)isMatch=true;currLrcIndex=i;break;if (isMatch)/改成用廣播的方式更新歌詞if(curr
57、LrcIndex = mp.getDuration()stop();Intent intent = new Intent();intent.putExtra(cmd, AppConstant.JUMP_CMD_NEXT);intent.setClass(PlayerSrv.this, ListSrv.class);startService(intent);catch (Exception e)e.printStackTrace();handler.postDelayed(updateTimeCallback,10);MpsIterm.javapackage sled.model;import
58、java.io.Serializable;public class MpsIterm implements Serializableprivate String name_mp3;private long size_mp3;private String name_lrc;private String name_img;public MpsIterm()public MpsIterm(String name_mp3,long size_mp3,String name_lrc,String name_singer,String name_img)_mp3 = name_mp3;t
59、his.size_mp3 = size_mp3;_lrc = name_lrc;_img = name_img;public String getName_mp3() return name_mp3;public void setName_mp3(String name_mp3) _mp3 = name_mp3;public long getSize_mp3() return size_mp3;public void setSize_mp3(long size_mp3) this.size_mp3 = size_mp3;public Str
60、ing getName_lrc() return name_lrc;public void setName_lrc(String name_lrc) _lrc = name_lrc;public String getName_img() return name_img;public void setName_img(String name_img) _img = name_img;Overridepublic String toString() return MpsIterm name_mp3= + name_mp3 + , size_mp3= + size
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 3 Amazing animals Lesson 1(教學(xué)實(shí)錄)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 2024年度商場內(nèi)網(wǎng)紅打卡地租賃合同(含商業(yè)推廣策略)3篇
- 2023三年級英語上冊 Unit 2 How Are You教學(xué)實(shí)錄 陜旅版(三起)
- 2024年度旅游項(xiàng)目反擔(dān)保抵押貸款合同2篇
- 2024年度抗震加固抹灰勞務(wù)分包合同2篇
- 2024年科技園區(qū)PPP項(xiàng)目合同模板與實(shí)施策略2篇
- 2024年度鐵礦石加工與裝運(yùn)條款合同2篇
- 攀枝花市2025屆高三第一次統(tǒng)一考試(一統(tǒng))歷史試卷(含答案解析)
- 2024全新環(huán)保餐具研發(fā)生產(chǎn)與校園團(tuán)購合作協(xié)議3篇
- 2024年土地登記代理及權(quán)屬調(diào)查合同3篇
- 外研社版三起英語四年級上冊復(fù)習(xí)提綱-
- 《有創(chuàng)監(jiān)測技術(shù)》課件
- 馬工程版《中國經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- 人工智能在網(wǎng)絡(luò)安全的應(yīng)用詳述
- 【課件】信息系統(tǒng)的優(yōu)勢與局限性 2023-2024學(xué)年人教中圖版(2019)高中信息技術(shù)必修二
- 資產(chǎn)評估公司三級復(fù)核管理制度
- 國開《植物病蟲害防治基礎(chǔ)》形考任務(wù)1-4答案
- 國家開放大學(xué)《社會工作概論》形考任務(wù)1-4參考答案
- 施工現(xiàn)場危險(xiǎn)源辨識清單-2014年版
- 伯牙鼓琴完美版課件
- 年產(chǎn)10萬噸生物有機(jī)肥項(xiàng)目可行性報(bào)告
評論
0/150
提交評論