zoukankan      html  css  js  c++  java
  • Mono的简单例子

    一直对移动端开发有些兴趣,但苦于不会Java,好在终于找到了个好玩的。

    安装方法略了,先建立一个玩玩

    不多说,贴代码了,需要注意的只有些JAVA和C#写法不太一样的地方,不细介绍了,因为没什么经验,乱试的,所以也没什么规范,随便看看就好

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Java.Util;
    
    namespace AndroidHotelServiceTest
    {
        [Activity(Label = "My Activity")]
        public class ActivityCalendar : Activity
        {
            protected override Dialog OnCreateDialog(int id)
            {
                if (id == 1)
                {
                    return new DatePickerDialog(this, new DDialogLisetener(this), 2013, 11, 11);
                }
                return base.OnCreateDialog(0);
            }
    
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                // Create your application here
                SetContentView(Resource.Layout.CalendarView);
                Button button = FindViewById<Button>(Resource.Id.btClose);
                button.Click += delegate
                {
                    Intent intent = new Intent();
                    intent.SetClass(this, typeof(ActivityHotel));
                    StartActivity(intent);
                };
    
                ShowDialog(1);
    
            }
        }
    
        public class DDialogLisetener : DatePickerDialog.IOnDateSetListener
        {
            private Context _context;
            public DDialogLisetener(Context context)
            {
                _context = context;
            }
    
            public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
            {
                String sDayOfWeek = getDayOfWeek(year, monthOfYear, dayOfMonth);
                //Toast.makeText(CreateParty.this, "sdf", Toast.LENGTH_LONG).show();
                int m_nYear = year;
                int m_nMonth = monthOfYear + 1;
                int m_nDay = dayOfMonth;
                Toast.MakeText(_context, "ddd", ToastLength.Long).Show();
                Toast.MakeText(_context, m_nYear + "年" + m_nMonth + "月" + m_nDay + "日 ", ToastLength.Long).Show();
            }
    
            private string getDayOfWeek(int tmpYear, int tmpMonth, int tmpDay)
            {
                String myWeek = null;
                String sYear = tmpYear.ToString();
                // 取年的后两位
                String sYearTwo = sYear.Substring(sYear.Length - 2);
    
                int y = tmpYear;
    
                int m = tmpMonth + 1;
                int c = 20;
                int d = tmpDay;
                int w = (y + (y / 4) + (c / 4) - 2 * c
                        + (26 * (m + 1) / 10) + d - 1) % 7;
    
    
                switch (w)
                {
                    case 0:
                        myWeek = "日";
                        break;
                    case 1:
                        myWeek = "一";
                        break;
                    case 2:
                        myWeek = "二";
                        break;
                    case 3:
                        myWeek = "三";
                        break;
                    case 4:
                        myWeek = "四";
                        break;
                    case 5:
                        myWeek = "五";
                        break;
                    case 6:
                        myWeek = "六";
                        break;
                    default:
                        break;
                }
                return myWeek;
    
            }
    
            public void Dispose()
            {
                this.Dispose();
            }
    
            public IntPtr Handle
            {
                get { return IntPtr.Zero; }
            }
        }
    }
    

      参考了不少网上的代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.Media;
    using Android.Content.Res;
    using Java.IO;
    
    namespace AndroidHotelServiceTest
    {
        public class BeepManager
        {
            private static Activity m_CurrentActivity;
            private static MediaPlayer m_MediaPlayer = null;
    
            private static MediaPlayer BuildMediaPlayer(Context context)
            {
                MediaPlayer player = new MediaPlayer();
                player.SetAudioStreamType(Android.Media.Stream.Music);
                player.Completion += new EventHandler(mediaplayer_Completion);
    
                AssetFileDescriptor assetfiledescriptor = context.Resources.OpenRawResourceFd(0x7f040000);
                try
                {
                    player.SetDataSource(assetfiledescriptor.FileDescriptor, assetfiledescriptor.StartOffset, assetfiledescriptor.Length);
                    assetfiledescriptor.Close();
                    player.SetVolume(0.1F, 0.1F);
                    player.Prepare();
                    m_MediaPlayer = player;
                }
                catch (IOException ioexception)
                {
                    player = null;
                }
    
                return player;
            }
    
            static void mediaplayer_Completion(object sender, EventArgs e)
            {
                m_MediaPlayer.SeekTo(0);
            }
    
            public static void PlayBeepSound(Activity activity)
            {
                m_CurrentActivity = activity;
                if (m_MediaPlayer == null)
                {
                    m_MediaPlayer = BuildMediaPlayer(m_CurrentActivity);
                }
                m_MediaPlayer.Start();
            }
    
            public static void Stop()
            {
                if (m_MediaPlayer != null)
                {
                    m_MediaPlayer.Stop();
                    m_MediaPlayer = null;
                }
            }
    
            //private void prepareToPlay()
            //{
            //    try
            //    {
            //        //获取当前音频流的路径后我们需要通过MediaPlayer的setDataSource来设置,然后调用prepareAsync()来完成缓存加载  
            //        String path = pathList.get(currPosition);
            //        player.setDataSource(path);
            //        //之所以使用prepareAsync是因为该方法是异步的,因为访问音频流是网络操作,在缓冲和准备播放时需要花费  
            //        //较长的时间,这样用户界面就可能出现卡死的现象  
            //        //该方法执行完成后,会执行onPreparedListener的onPrepared()方法。  
            //        player.prepareAsync();
    
            //    }
            //    catch (IllegalArgumentException e)
            //    {
            //        // TODO Auto-generated catch block  
            //        e.printStackTrace();
            //    }
            //    catch (IllegalStateException e)
            //    {
            //        // TODO Auto-generated catch block  
            //        e.printStackTrace();
            //    }
            //    catch (IOException e)
            //    {
            //        // TODO Auto-generated catch block  
            //        e.printStackTrace();
            //    }
            //}  
        }
    }

    调用WCF验证登陆

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using System.ServiceModel;
    using System.Threading;
    
    namespace AndroidHotelServiceTest
    {
        [Activity(Label = "登陆", MainLauncher = true)]
        public class ActivityLogin : Activity
        {
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                SetContentView(Resource.Layout.Login);
                // Create your application here
    
                Button button = FindViewById<Button>(Resource.Id.login);
                EditText txtUser = FindViewById<EditText>(Resource.Id.edtuser);
                EditText txtPassword = FindViewById<EditText>(Resource.Id.edtpsd);
    
                button.Click += delegate
                {
                    Login(txtUser.Text, txtPassword.Text);
                };
            }
    
            public void Login(string user, string password)
            {
                BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                var timeout = new TimeSpan(0, 1, 0);
                binding.SendTimeout = timeout;
                binding.OpenTimeout = timeout;
                binding.ReceiveTimeout = timeout;
    
                IHotelService service = ChannelFactory<IHotelService>.CreateChannel(binding,
                    new EndpointAddress("http://172.25.16.50:90/HotelService.svc"));
                string loginUser = service.Login(user, password);
                if (!string.IsNullOrEmpty(loginUser))
                {
                    Intent intent = new Intent();
                    intent.SetClass(this, typeof(ActivityHotel));
                    intent.PutExtra("User", user);
                    StartActivity(intent);
                }
            }
        }
    }

    总之,大概就这样了,页面布局什么的也没什么特别的。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:minWidth="25px"
        android:minHeight="25px">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="账号:" />
            <EditText
                android:layout_width="240dip"
                android:layout_height="wrap_content"
                android:text="aaa"
                android:id="@+id/edtuser" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密码:" />
            <EditText
                android:layout_width="240dip"
                android:layout_height="wrap_content"
                android:password="true"
                android:id="@+id/edtpsd" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:orientation="vertical">
                <CheckBox
                    android:id="@+id/checkbox"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="记住密码" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">
                <Button
                    android:id="@+id/login"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="登录" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    至于服务端,就是VS自动生成的代码加了一个登陆判断而已

    [ServiceContract]
        public interface IHotelService
        {
            [OperationContract]
            string Login(string user, string password);
        }
  • 相关阅读:
    ABP源码编译及部署
    nopCommerce源码本地部署、配置及语言包导入
    MongoDB查询转对象时出错 Element '_id' does not match any field or property of class
    找不到资产文件 project.assets.json
    Docker中运行.net core 验证码不显示
    css设置input不显示光标
    js中的==和===
    Navicat连接mysql(高级选项配置)
    js回调函数,检测这个值是否重复
    layer数据表格换行
  • 原文地址:https://www.cnblogs.com/saaav/p/3585896.html
Copyright © 2011-2022 走看看