`
yangwei0915
  • 浏览: 465241 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

android调用本地服务示例

阅读更多

在大多数情况下android只需要调用本地的服务(也就是和调用者在同一个进程的服务)就可以,调用服务必须采用的绑定的方式建立和服务的连接,并且得到服务的实例,然后才能调用。下面的例子演示了在Activity调用本地服务,在Activity界面上输入人名,点击确定在按钮的下面显示调用服务的结果:人名":Hello World",步骤如下:

1.创建服务接口,

服务接口提供了服务能提供的供调用者调用的方法。

IService.java

package com.local.service;

public interface IService {
	public String getHelloResult(String name);
}

 

2.服务的实现者

HelloService.java

package com.local.service;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;


public class HelloService extends Service {
    private MyServiceBinder myServiceBinder = new MyServiceBinder();
    @Override
    public IBinder onBind(Intent intent) {
        return myServiceBinder;
    }
    public class MyServiceBinder extends Binder implements IService {
		@Override
		public String getHelloResult(String name) {
			// TODO Auto-generated method stub
			return name+":Hello World";
		}
    }
    
}

 

3.调用服务的Activity

LocalServiceCallDemo.java

package com.local.service;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class LocalServiceCallDemo extends Activity {

	private EditText mEditText;
	private IService serviceInstance;
	private TextView textView;
	ServiceConnection conn = new ServiceConnection() {
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			Log.i("INFO", "Service bound");
			serviceInstance = (IService) service;
		}

		@Override
		public void onServiceDisconnected(ComponentName arg0) {
			Log.i("INFO", "Service Unbound");
		}

	};

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button mButton = (Button) findViewById(R.id.myButton);
		mEditText = (EditText) findViewById(R.id.myEditText);
		textView = (TextView) findViewById(R.id.myTextView01);
		bindService(new Intent("com.local.service.MY_SERVICE"), conn,
				Context.BIND_AUTO_CREATE);
		mButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				Editable str;
				str = mEditText.getText();
				String result = serviceInstance.getHelloResult(str.toString());
				textView.setText(result);
			}
		});
	}
}

 

 

分享到:
评论

相关推荐

    Androidstudio调用jni的示例

    这个“Androidstudio调用jni的示例”是一个基础教程,旨在帮助初学者理解如何在Android Studio项目中使用JNI来调用本地C/C++代码。下面将详细介绍这个示例中的关键步骤和涉及的知识点。 1. **创建JNI接口** 在Java...

    android 服务概述 本地服务示例

    本篇文章将深入探讨Android服务的概念,本地服务的实现,并通过一个示例来阐述如何创建和使用本地服务。 首先,理解服务的基本概念是非常重要的。服务并没有自己的用户界面,它的工作完全在后台进行。服务可以被...

    Web调用本地Android应用

    本文将深入探讨“Web调用本地Android应用”的实现原理、方法以及实际应用案例。 首先,我们要理解的是WebView组件。WebView是Android SDK提供的一种用于显示网页内容的视图组件。通过WebView,我们可以在Android...

    android jni调用资料示例

    使用JNI调用本地方法涉及以下步骤: - 在Java类中声明native方法,并使用`System.loadLibrary()`加载对应的本地库。 - 在对应的C/C++头文件中声明JNI函数原型,通常以`JNIEXPORT`和`JNIEnv*`开头。 - 实现C/C++...

    android 本地服务通信 AIDL service服务与activity之间的通信

    本示例“android 本地服务通信 AIDL service服务与activity之间的通信”通过一个学号查询学生的例子,清晰地展示了如何利用AIDL实现在Activity和Service之间的数据传递。 首先,我们需要了解AIDL的基本概念。AIDL...

    如何在android app调用webservice的示例源码

    本示例源码详细展示了如何在Android应用程序中调用Web服务,这对于理解和实践Android与Web服务通信至关重要。以下将详细介绍这个过程涉及的关键知识点。 1. **Android网络请求基础**:在Android中,所有网络操作...

    android 调用系统自带录音机

    在Android平台上,调用系统自带的录音机是开发者经常遇到的需求,这可以帮助用户方便地录制音频并集成到应用中。本文将深入探讨如何在Android应用中实现这一功能,并结合"AutoRecoder"这个示例来讲解相关知识点。 ...

    Android调用WPS

    总的来说,Android调用WPS涉及的步骤包括集成SDK、注册应用获取密钥、调用API并处理回调。在具体实现过程中,要注意权限管理、错误处理以及用户体验。通过熟练掌握这些知识点,你将能够在Android应用中无缝地集成WPS...

    Qt调用Android原生Toast控件示例,含源码

    在IT领域,尤其是在移动应用开发中,经常需要跨平台的解决方案。Qt是一个强大的跨平台应用程序开发框架,支持Windows、Linux、macOS...这个方法同样适用于其他需要调用Android原生功能的场景,如启动服务、发送广播等。

    Android通过jin调用C示例

    "Android通过JNI调用C示例"这个主题就是围绕这一技术展开的。 JNI是Android系统中一个关键组件,它允许开发者在Java应用中嵌入本地代码,以提高性能或者利用已有的C/C++库。在Android应用开发中,JNI通常用于以下几...

    android 使用jni调用c++

    本教程将详细介绍如何在Android项目中使用JNI调用C++代码。 首先,你需要配置Android的NDK(Native Development Kit)。NDK是一组工具,开发者可以用它来编写用C和C++编写的应用程序模块,这些模块可以直接在...

    android调用前后置摄像头拍照

    以上就是Android调用前后置摄像头拍照的基本步骤。你可以根据实际需求进行扩展,比如添加闪光灯控制、设置拍照质量、裁剪图片等。这个`Android_Camera`压缩包文件可能包含了实现上述功能的完整代码示例,你可以参考...

    android调用讯飞语记实现在离线语音合成(含源代码)

    在Android平台上实现离线语音合成是一项实用且技术含量较高的任务,尤其对于那些希望在无网络环境下仍然能够提供语音服务的应用来说。本教程将详细介绍如何利用科大讯飞提供的语记SDK来实现这一功能,并附带源代码供...

    Android中调用js方法及js中调用本地方法

    1. **Android调用JavaScript** 要在Android中调用JavaScript的方法,可以使用WebView的`loadUrl()`或`evaluateJavascript()`方法。 - `loadUrl("javascript:yourJsFunction()")`: 这种方式会在页面加载完成后...

    android调用天气demo

    本示例“android调用天气demo”提供了一个很好的起点,帮助开发者了解如何实现这一功能。不过,值得注意的是,这个demo存在一个已知的bug,即在用户输入城市名时,如果输入了非城市名或非法字符,应用程序可能会意外...

    android调用c和c++源代码

    JNI是Android系统提供的一种机制,它允许Java代码调用本地(即C/C++)代码,并且本地代码也可以调用Java方法。JNI接口包括头文件和库文件,开发者需要编写相应的JNI函数并在Java代码中声明对应的native方法。 在...

    android本地服务器demo

    "android本地服务器demo"就是一个这样的示例,它展示了如何在Android设备上搭建一个简单的服务器,使得在同一局域网内的其他设备可以通过IP地址与其进行通信。 首先,我们要了解Android作为服务器的基本原理。...

    JniDemo Android调用C语言

    本项目"JniDemo Android调用C语言"提供了一个完整的示例,展示了如何在Android Studio环境中利用JNI调用C语言代码。 首先,我们来理解一下JNI的基本概念。JNI是Java虚拟机(JVM)和本地代码之间的桥梁,它定义了一...

    Android JNI 用C函数写本地库读写文件,底层调用小例子

    JNI是Android提供的一种接口,使得Java应用程序可以调用C/C++编写的原生代码。这在需要高性能计算、访问硬件特性或利用已有的C库时特别有用。JNI的核心在于`JNIEnv`指针,它是Java虚拟机与本地代码之间的桥梁,提供...

    uniapp调用原生Android SDK

    【uniapp调用原生Android SDK】和【uniapp调用原生IOS SDK】涉及到的是在跨平台开发框架uniapp中如何与原生系统进行深度交互的技术。uniapp是一个使用Vue.js开发的所有平台的统一解决方案,它允许开发者通过一套代码...

Global site tag (gtag.js) - Google Analytics