英文.doc

实现Android手机音乐应用【中文4540字】

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:6099460    类型:共享资源    大小:1.72MB    格式:RAR    上传时间:2017-11-16 上传人:闰*** IP属地:河南
13
积分
关 键 词:
实现 android 手机 音乐 应用 利用 运用 中文
资源描述:
实现Android手机音乐应用【中文4540字】,实现,android,手机,音乐,应用,利用,运用,中文
内容简介:
【中文 4540 字】实现Android手机音乐应用摘 要:Android平台是谷歌在 2007 年推出的新一代智能手机平台。Android 提供了对音乐播放的支持,这可能会是广大开发商所关注的。所以Android 手机串流音乐的发展需要关注串流音乐到Android手机的HTTP流。 Android是开源的并且还提供一个易于使用的开发工具包。本文为您介绍Android的架构和组件,以及对 Android应用的解剖,包括功能的活动、意图接收器、服务、内容提供商等。这个应用是基于Android 的音乐需求(MOD )开发,致力于人们可以随时随地简单方便地访问和享受他们的数字音乐。该软件可以直接连接人们的内容,没有同步或上传他们的文件的麻烦。音乐需求(MOD )的用户也可以与家人和朋友在一个私人的,安全的组分享其个人媒体。Rhythm Box分享局域网上的音乐库,DDAP 数据包通过互联网发送到服务器的共享库。MOD使用数字音频访问协议(DAAP )对共享库中的音乐实时需求进行响应。前 言:Android是移动设备一个软件栈,包括操作系统,中间件和关键应用程序。开放手机联盟(OHA )在 2007 年 11 月 12 日发表了谷歌的Android SDK1。这个Android SDK提供了用Java编程语言在Android平台上开发应用程序所需的必要的工具和API。Android平台是开放的系统架构,具有多功能的开发和调试环境,而且还优化了图形系统,支持多种媒体和一个非常强大的浏览器,以便支持多种可扩展的用户体验。它可以重用,更换部件和有高效率的数据库支持,并支持各种无线通信手段。它使用了Dalvik虚拟机为移动设备做了很大程度上的优化 2。Android的各种各样功能如下, Android有它自己基于开源的 WebKit引擎的浏览器。它支持各种硬件,如GSM、蓝牙、EDG、3G 、WIFI、相机等。它还支持常见的音频,视频和静止图像格式(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF ) 。由于Android支持Wi-Fi和各种音频格式,用户可以从全球IP灵活地访问和控制音乐的分流。 Android的架构和 Android应用程序分析会在第二节和第三节中。从远程台式机到Android手机流音乐应用程序的设计分析在第四节中会提到,本文最后部分给出结论和参考文献。Android架构图 1Android架构上图是Android架构和它主要的组成部分。应用程序层Android附带了一套核心应用,包括电子邮件客户端,短信程序,日历,地图,浏览器,联系人等,将在第四节描述的是在应用层。所有应用程序都使用Java编程语言编写的。应用框架层应用程序框架提供了用于创建Android 应用程序的类。它还提供了硬件访问的通用抽象和管理的用户界面和应用程序资源。Android 开发人员可以核心应用一样拥有框架API 访问权限。核心库Android在内核上运行,包括各种 CC+的核心,例如libc和SSL,以及一个用于播放音频和视频媒体库。surface manager提供显示管理,包括SGL和OpenGL的二维、三维图形的图形库,用于网络浏览器和互联网安全的SSL和WebKit。Android运行时Android还包含了一组在Java编程语言核心库中功能最有用的核心库。每一个Android应用程序在Dalvik虚拟机中运行。Dalvik可以使应用有效地在移动设备上的虚拟机上运行。Dalvik虚拟机执行Dalvik占用最小的内存优化文件的可执行文件(.dex) 。虚拟机是基于寄存器的,并且运行被Java complier的“dx”工具转化成.dex 格式的类。Dalvik虚拟机依赖于Linux 内核基本功能,例如线程和低级别的内存管理。Linux内核核心服务(包括硬件驱动程序、过程和内存管理;安全、网络和电源管理)是由Linux2.6 内核的处理。内核还在硬件和堆栈部分之间的提供了抽象层。Android应用程序的分析一个Android 应用程序由 4 个组件组成:Activity 、Intent Receiver、Service 和Content Provider。并不是每一个应用程序需要这四个组件。但应用程序,都会用到他们当中的一些组合。一旦用户决定用到哪些组件,就需要在AndroidManifest.xml文件中列出。这是一个XML文件,其中包含用户为该应用程序声明的组件和他们的使用范围和要求 2 4。ActivityActivity是Android四个组件中最常见的。一个Activity通常是应用程序显示出来的屏幕。每个Activity都继承了Activity的基类,这个类将显示用户界面和响应事件,大多数应用程序有多个屏幕。例如,一个文本消息程序可能有一个屏幕显示将消息发送到联系人列表。第二个屏幕所选择的联系人写邮件和其他屏幕查看旧邮件或更改设置,这些屏幕都将会被当做Activity。显示另外一个屏幕需要启动一个新的Activity。在在某些情况下可能会返回到前面一个Activity里面的值。例如一个Activity,让用户选择一个照片然后返回选择照片给被调用的Activity。当一个新的屏幕打开时,先前的屏幕暂停,并放入到历史堆栈中。用户可以通过在历史导航到以前屏幕,在不恰当的时候保存的屏幕可以从历史堆栈中删除。Android会保留从主屏幕启动的每个应用程序的历史栈。Intent Receiver Android使用一个特殊的类Intent来移动画面。Intent描述的是一个应用程序到底想做什么。Intent 两个最重要数据,action和action所需要的数据。最典型的值有:MAIN ,VIEW, PICK,EDIT 等等。这些数据被表示为一个统一资源标识符(URI )。例如,在浏览器中查看网站,将创建具有VEIW值的 action和一个网站URI数据的意图。NewIntent(Android.content.Intent.VIEW_ACTION,ContentURI.create();还有一个相关的叫做IntentFilter的类。当Intent请求做一些事情, IntentFilter会选出怎么样的Intent (或者 Intent receiver,见下文)有能力处理这个 Intent。用户发布个人信息后,activity经过 IntentFilter选出View Intent,然后显示该用户的联系方式。Activity在AndroidManifest.xml文件发布IntentFilters。画面的切换是由Intent解析决定的。为了导航到下一个画面,activity调用startActivity(myIntent)。然后该系统根据IntentFilters安装应用程序和选择 IntentFilters最佳匹配myIntent的activity。新新的activity启动由Intent所引起。这个Intent解析过程称为startActivity时的运行时。想要应用程序执行外部事件时可以使用Intent Receiver。例如,当电话铃响时,或当数据网络可用时,或当午夜的时候可以使用Intent Receiver 。 Intent Receiver不会显示用户界面,尽管当发生了一些有趣的事情时Intent Receiver可能会显示通知提醒用户。Intent receiver也注册在AndroidManifest.xml中,但也可以编写代码Context.registerReceiver()进行注册。程序不是一定要对用到的Intent进行调用,当Intent receiver被触发时系统会启动程序。应用程序通过Context.broadcastIntent ()可以向他人发送自己的 Intent。Service Service是一段周期长没有用户界面的代码。一个很好的例子,就是一个媒体播放器播放列表的歌曲。在媒体播放器这个应用程序,有一个或多个活动,让用户选择歌曲并开始播放。然而音乐播放时不会使用activity,因为用户希望切换歌曲时只需改变播放的歌曲而不是启动一个新的界面。在这种情况下,媒体播放器的activity可以开始使用Context.startService()在后台运行保持音乐服务。系统将会继续播放,直到音乐播放完成。(你可以学到更多通过阅读Life Cycle of an Android Application你会知道service优先级)。请注意,你可以连接到一个service(并启动它,如果它尚未运行)通过Context.bindService()方法。当连接到一个service,service通过接口进行传递。音乐播放这个service ,就可以实现暂停,重播等。Content Provider应用程序可以在文件中存储数据,SQLite数据库,参数或其他有意义的机制。当需要应用程序的数据将与其他应用程序共享时,content Provider将会很有用。content provider是一个类,这个类实现了一系列标准的方法,这些方法可以让其他应用程序存储和检索那些被content provider处理过的数据。MUSIC ON DEMANDAndroid音乐应用程序现在可用的方案中,人们收藏音乐是通过吧音乐存到手机的存储卡中。这是个让人忙碌和单调乏味的工作。为了克服这一问题并且实现得到用户希望想要听的歌曲后搜索到这个歌曲,这就是这个应用程序需要实现的。有了这个系统,用户将能够在任何地方的共享媒体文件(台式机/笔记本电脑) 。要做到这一点,用户需要的仅仅是一个互联网连接,然而互联网如今已经是非常普及了。用户不需要真正公开分享音乐文件就能够分享到音乐。请求的客户端将能够发挥不从自己的工作站或Android手机的媒体播放音乐,而是将文件复制到他们的系统。分析用户简介后,用户列表的朋友可以有保持各自的共享媒体的访问。每当用户给出一个请求,请求就会被经过验证的用户账户分享的系统抓取并且然后流回到发出请求的客户端系统。因此,服务器不需要特别大的数据存储空间。该应用程序由三个主要组成部分:桌面客户端界面客户机应用程序界面,这是与服务器进行通信的唯一目的而设计的。它作为媒体播放器和服务器之间的调解人。用户可以通过此接口创建他/她的私人帐户。该接口也将开展通过互联网流媒体音频文件的任务。流媒体协议实际上是这个接口和服务器之间的工作。图 2 接口用于Rhythm boplayer和服务器之间的通信。Android客户端Android移动平台上类似的界面。 用户是不能够分享到Android手机的媒体。接口将只接收流媒体,并在Android手机上的播放器中播放。文件会在从共享文件列表中顺序播放。用户可以随机地要求任何音频文件,该文件都会同步播放。图 3 Android应用程序的流媒体音乐和共享音乐库列表服务器它执行了两次大的操作,从客户端获取,分流到另一个客户端并且从桌面客户端存储整个音乐序列。服务器通过全球IP进行所有的通信。图 4 系统架构上图显示music on demand这个系统在 Android手机上详细的视图。上图所示和之前解释的,这个系统由三个主要组成部分客户端,服务器和Android手机应用。进一步解释三个组成部分之间的实际沟通的细节是如何发生的。桌面客户端接口和Rhythmbox音乐媒体播放器之间的消息流。(我们使用libopendaap library/API用于 rhythmboxDAAP之间的通信)。1首先,创建一个将确定本地的DAAP客户,这个将会定义到DAAP 共享中。2然后连接到本地的DAAP共享,忽略从本地网络中其他的DAAP 的共享。3 DAAP给本地Rhythm 播放器提出请求,如下:客户端的Rhythmbox说明-/server-info-请求服务器要求的内容登录更新请求数据库请求请求的歌曲请求播放列表.MP3-请求 MP3。包的往返响应超时登录包的访问权限。本地机器描述歌曲名单(10 首歌曲/包)歌曲答复歌曲的实际流量往返时间超时计算登录数据包进行验证共享库的请求歌曲的请求歌曲请求(歌曲 ID)Request for server info request for content-codes login update request database request request songs request playlists .mp3- request mp3 Packet for round trip time outLogin packet for auth. Local machine description List of songs (10 songs/packet) song reply Actual stream of the song Round trip time out calculation Login packet for authentication Request for shared libraries Request for songs Song request (with song-id) -strp- Stream reply (with path for HTTP streaming)Figure 5 Result of streaming music to Android fromDesktop client throughWe can see from the above figure that the implementation of streaming application to Android through global IP using DAAP and Rhythmbox is convenient CONCLUSION We love a variety of music and of course, we have 4000+ song collection, which we cannot fit on our Android Phone. Neither can our friends library, however, Music On Demand takes you to your friends song collections wherever you go without taking up more than 1MB of space. This application lets you listen to your music collection anywhere you want. In addition to being able to listen to Your own music, you can also invite friends to be on your friend list and stream their music as well. This is a very straightforward application and gives the rays of hopes for streaming music on Android, hence its name Rayss Tunes. The first step is to run the desktop client interface application on your desktop. This acts as the gateway to your library. The second step is to install the Rayss Tunes application on your Android Phone. Once you have logged in at both locations with same user name and password, your home library becomes available to your Android Phone through this application. You can also get music from anyone whom you have invited to be your friend on the Music on Demand network. There is absolutely no configuration other than logging into the application. Rayss Tunes is a very simple application. There is not much to it. Install the small desktop app, then the Android app, log in, and there is your music. To add your friends, you can send them a request and if they accept, you will be able to see their music as well. Hence, this Application let user Tap what he want and presto: the music plays, complete with album art and it single-handedly justifies the use of the application REFERENCES 1 Open Hanset Alliance, /.2 Android - An Open Handset Alliance Project, -/intl/zh-CN/Android/. 3 OpenDAAP Library- /programs/itunes/libopendaap.html4 .5 C. Haseman, Android Essentials, PDF Electronic Book.2008. Available from: http:/Androidos.cc/dev/index.php.6 http:/www.developer.A.A Novel approach for streaming music to Android phone through Global IP using DAAPVishal A. Kamble; Annasaheb Dange College of Engineering and Technology; Dept of Computer Science; Ashta, India.Amol S. Dange; Annasaheb Dange College of Engineering and Technology; Dept of Computer Science; Ashta, India.Sachin P. Yadav; Annasaheb Dange College of Engineering and Technology; Dept of Computer Science; Ashta, India.ABSTRACT Android platform is new generation of smart mobile phone platform launched by Google in 2007.Android provides support to music streaming, which is probably a concern of vast number of developers. So as the development of music streaming to Android phone is concern its need an http streams to stream music to Android phone. Android is an open sources and providing an easy to use development kit. This paper introduce you the Architecture and components of Android and analyzes the anatomy of Android application including the functions of Activity, Intent Receiver, Services, Content Provider, and etc. Based on Android the application Music On Demand (MOD) is developed to dedicated to make it easier for people to access and enjoy their digital music whenever and wherever they want. This software connects people directly with their content, without the hassles of synching or uploading all their files. Music on Demands users can also share their personal media with family and friends in a private, secure group. Music from shared libraries is streamed on demand in real time.MOD leverages the implementation of Digital Audio Access Protocol (DAAP). Rhythm Box shares the music library on LAN and we tunnel the DAAP packets over Internet to the servers shared library.INTRODUCTION Android is a software stack for mobile devices that include an operating system, middleware and key application. The Open Handset Alliance (OHA) released the Google Android SDK on November 12, 2007 1. The Android SDK provides the tools and APIs necessary to begin developing application on the Android platform using Java programming language. Android platform is of open system architecture, with versatile development and debugging environment, but also supports a variety of scalable user experience, which has optimized graphics systems, rich media support and a very powerful browser. It enables reuse and replacement of components and an efficient database support and support various wireless communication means. It uses a Dalvik virtual machine heavily optimized for mobile devices 2. The Various feature of Android are as fallow, Android have its own browser based on open source WebKit engine. It has various hardware dependent feature lke GSM, Bluetooth, EDGE, 3G, WiFi, Camera etc. It has media support for Common audio, video, and still image formats (MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF) As the Android support the Wi-Fi and various audio format user can flexibly access and control the streaming of music from a Global IP. The Android architecture and anatomy of Android application are addressed in Section II and III. Based on the analyses, the design of Streaming application to stream music from remote desktop machine to Android phone is then presented in section IV and the last section gives the conclusion and various references.ANDROID ARCHITECTUREFigure 1 Android architectureThe Android architecture and its main components are shown in above Figure 1.Application LayerAndroid will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others even the application, which will be described in Section IV is in application layer. All applications are written using the Java programming language.Application FrameworkThe application framework provides the classes used to create Android applications. It also provides a generic abstraction for hardware access and manages the user interface and application resources. Developers have the full access to same framework APIs used by the core application. LibrariesRunning on top of the kernel, Android includes various CC+ core libraries such as libc and SSL as well as, A media library for playback of audio and video. A surface manager to provide display management, Graphics libraries that include SGL and OpenGL for 2D and 3D graphics, SQLite for native database support, SSL and WebKit for integrated web browser and internet security.Android RuntimeAndroid includes a set of core libraries that provides most of functionality available in the core libraries of the Java programming language. Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run mobile VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes complied by Java language complier that have been transformed into the .dex format by the included “dx” tool. The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management. Linux KernelCore services (including hardware drivers, process and memory management, security, network, and power management) are handled by a Linux 2.6 kernel. The kernel also provides an abstraction layer between the hardware and the remainder of the stack. ANATOMY OF ANDROID APPLICATIONThere are four building blocks to an Android application: Activity, Intent Receiver, Service, and Content Provider Not Every application needs to have all four, but user application will be written with some combination of these. Once user has decided what components he need for his application, he should list them in a file called AndroidManifest.xml. This is an XML file where user declares the components of user application and what their capabilities and requirements are24. ActivityActivities are the most common of the four Android building blocks. An activity is usually a single screen in your application. Each activity is implemented as a single class that extends the Activity base class. Your class will display a user interface composed of Views and respond to events. Most applications consist of multiple screens. For example, a text messaging application might have one screen that shows a list of contacts to send messages to, a second screen to write the message to the chosen contact, and other screens to review old messages or change settings. Each of these screens would be implemented as an activity. Moving to another screen is accomplished by a starting a new activity. In some cases an Activity may return a value to the previous activity - for example an activity that lets the user pick a photo would return the chosen photo to the caller. When a new screen opens, the previous screen is paused and put onto a history stack. The user can navigate backward through previously opened screens in the history. Screens can also choose to be removed from the history stack when it would be inappropriate for them to remain. Android retains history stacks for each application launched from the home screen.Intent Receiver Android uses a special class called Intent to move from screen to screen. Intent describes what an application wants done. The two most important parts of the Intent data structure are the action and the data to act upon. Typical values for action are MAIN (the front door of the application), VIEW, PICK, EDIT, etc. The data is expressed as a Uniform Resource Indicator (URI). For example, to view a website in the browser, you would create Intent with the VIEW action and the data set to a Website-URI.NewIntent(Android.content.Intent.VIEW_ACTION,ContentURI.create(); There is a related class called an IntentFilter.While an Intent is effectively a request to do something, an Intent filter is a description of what Intents an activity (or Intent receiver, see below) is capable of handling. An activity that is able to display contact information for a person would publish an IntentFilter that said that it knows how to handle the action VIEW when applied to data representing a person. Activities publish their IntentFilters in the AndroidManifest.xml file. Navigating from screen to screen is accomplished by resolving Intents. To navigate forward, an activity calls startActivity(myIntent). The system then looks at the Intent filters for all installed applications and picks the activity whose Intent filters best matches myIntent. The new activity is informed of the Intent, which causes it to be launched. The process of resolving Intents happens at run time when startActivity is called. You can use an Intent Receiver when you want code in your application to execute in reaction to an external event, for example, when the phone rings, or when the data network is available, or when its midnight. Intent receivers do not display a UI, although they may display Notifications to alert the user if something interesting has happened. Intent receivers are also registered in AndroidManifest.xml, but you can also register them from code using Context.registerReceiver(). Your application does not have to be running for its Intent receivers to be called; the system will start your application, if necessary, when an Intent receiver is triggered. Applications can also send their own Intent broadcasts to others with Context.broadcastIntent(). Service A Service is code that is long-lived and runs without a UI. A good example of this is a media player playing songs from a play list. In a media player application, there would probably be one or more activities that allow the user to choose songs and start playing them. However, the music playback itself should not be handled by an activity because the user will expect the music to keep playing even after navigating to a new screen. In this case, the media player activity could start a service using Context.startService() to run in the background to keep the music going. The system will then keep the music playback service running until it has finished. (You can learn more about the priority given to services in the system by reading Life Cycle of an Android Application.) Note that you can connect to a service (and start it if its not already running) with the Context.bindService() method. When connected to a service, you can communicate with it through an interface exposed by the service. For the music service, this might allow you to pause, rewind, etc. Content Provider Applications can store their data in files, a SQLite database, preferences or any other mechanism that makes sense. A content provider, however, is useful if you want your applications data to be shared with other applications. A content provider is a class that implements a standard set of methods to let other applications store and retrieve the type of data that is handled by that content provider. MUSIC ON DEMANDSTREAMING APPLICATION FOR ANDROIDIn present available schemes, people take on and off their music collection from phone memory, which is really a hectic and tedious job. To overcome this and to get user what he wants to listen and tap his feet on music, this application is implemented 356 .With this system, user will be able to share the media files from anywhere (Desktops/Laptops).To do so, what user needs is just an Internet connection, which is common these days. User will be able to share the media without actually sharing the files publicly. The requesting clients will be able to play the media from their workstation or Android Phone without actually copying the files to their system. Proper user profiling is done and friend list of the users is maintained to get access of the respective shared media. Whenever a user requests for a track, it will be fetched from the system on which it is shared under the authenticated users account and then streamed back to the requesting client. So the server need not have exceptionally large data storage space. There are three main components of this system- Desktop Client Interface The application interface for the client machine, which is designed for the sole purpose of communicating with the server. It is acting as mediator between the media player and the server. The user is able to create his/her private account through this interface. This interface will also carry out the task of streaming the audio files through internet. The streaming protocol is actually working between this interface and server.Figure 2 Interface for communicating between Rhythm boplayer and Server.Android Client The similar interface on the Android mobile platform. The user is not able to share the media from the Android phone. The interface will just receive the streamed media and play it using the media player on the Android mobile. The files will be played sequentially from the list of shared files. The user can demand any audio file randomly. The file will be streamed and played simultaneously.Figure 3 Android applications for streaming music and to get the list of shared music libraryThe Server It performs two major operations, fetching from one client, streaming it to another and storing references of the entire music track shared by the user from desktop client. The server will have a Global IP through which all the communication will take place.Figure 4 System ArchitectureThe above shown figure gives the detail view of music on demand system for Android. As shown and explain above it is divided into three main component Client, Server and Android phone application. The detail of how actual communication between the three components takes place is explained further. Flow of messages between Desktop Client Interface and Rhythmbox Media Player (We are using libopendaap library/API for communicating with the rhythmbox DAAP share)3 .1. First create a DAAP client which will identify the local DAAP share. 2. Then connect to the local DAAP share ignoring all other DAAP shares from local network. 3. The DAAP requests made to the local Rhythm box player are as follows: Client Rhythmbox Description -/server-info- Request for server info request for content-codes login update request database request request songs request playlists .mp3- request mp3 Packet for round trip time out
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:实现Android手机音乐应用【中文4540字】
链接地址:https://www.renrendoc.com/p-6099460.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!